glide

8年Android程序员一个月面试6家大厂的面试题整理和建议

不想你离开。 提交于 2020-08-06 07:21:32
前言 我不是什么大牛,我只是一个有八年工作经验的Android老兵,既没有非常亮眼的学历,也没有牛逼大厂的履历。 这个冬天,在孩子得病从急诊转住院的时候,我得到了年前将被优化的消息,作为家里唯一经济来源的我整个人蒙了,一时间茫然和无助差点毁了我。 最后我还是和家人如实说了,受到了他们的极大的鼓励,也找到了重新开始的勇气。 可惜这场疫情来的如此凶猛,职位少、要求高、电话面试、视频面试、在线coding、屡战屡败、屡败屡战,构成了我这一个月的常规生活。 我一开始也焦虑、茫然,甚至对自己的能力和工作经验深深怀疑。 后来经过几个好朋友的鼓励打气,也看了很多面试文章,认真总结自己面试中不足的地方,查漏补缺,终于在这周确定了offer。 接下来我就对我面过公司的面试题做一下总结,权当抛砖引玉,希望对大家有帮忙。 面试问题汇总 某知名在线教育公司 介绍一下自己项目中MVP如何实现; 自定义View流程; 说说项目中遇到的性能优化、内存泄漏和内存溢出; native和h5交互怎么做; 事件分发流程; http、https的区别,post、get区别; 算法:两个单链表相交,求相交结点; 算法:获取单链表倒数第k个元素; 著名安全类公司 Activity的启动模式和应用场景; Handler机制以及与Message等之间的关系; 与Service通信的几种方式,进程间通信和进程内通信的区别;

Android 特效大全代码资源——源码

不羁岁月 提交于 2020-08-05 00:52:33
原文地址: https://blog.csdn.net/meixi_android/article/details/84335381 常用的 iOS 风格 dialog 和 meterial design 风格的 dialog: https://github.com/glassLake/DialogUtils 提高 Android 应用的颜值,酷炫 UI 组件汇总: https://github.com/madongqiang2201/views Awesome-MaterialDesign - MaterialDesignCenter改名为Awesome-MaterialDesign,优化了布局,新增了不少库。 awesome-android-ui - ui库,非常多的ui及特效。 ChipsLibrary - 在 android EditText中实现打Tag功能。 bitmapMesh - 拉窗帘效果。 ObservableScrollView - 在滚动的视图观测滚动事件的Android库 它易于与在Android 5.0 Lollipop中引入的工具条Toolbar相交互,并能够帮助实现Material Design apps的外观。 iconify - iconify 图片与文字同一行显示。 iosched - The Google I/O 2014 Android

Android开发使用Glide获取图片背景色淡绿色解决办法

我的未来我决定 提交于 2020-07-27 09:54:12
在Android开发中,常用的加载图片工具有,Glide,Picasso,Fresco,其中Glide和Picasso使用方法极为相似,相对于Picasso来说,Glide加载图片更为迅速,内存占用更小等优点,但图像呈现和图像质量略逊一筹,而Fresco还未曾使用,对此不作评价。 首先集成Glide,因为项目用的是这个版本,所以就以此版本为例 如果想看最新版Glide,,,,,传送门 compile 'com.github.bumptech.glide:glide:3.7.0' 修改布局代码,增加一个ImageView用来显示图片 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/ivTestImage" android:layout_width="100dp" android:layout_height="100dp"/> </RelativeLayout> 在Activity获取图片 public

性能优化组合拳

末鹿安然 提交于 2020-05-08 19:08:31
一、卡顿优化 启动卡顿优化 现象:启动慢,启动白屏,启动黑屏 1、不要在oncreate中做耗时操作 2、不要在application中做耗时操作 3、布局要浅,避免过度绘制,如果布局实在是复杂,用Constraintlayout 开发者选项中有调试GPU过度渲染工具。 颜色:蓝色<浅绿<浅红<深红 分别代表:绘制一次<绘制两次<绘制三次<绘制四次及以上 4、如果加载的实在是多,就分步加载,放到子线程,加载一部分回调一部分刷新主线程数据 白色主题耗时多久白屏,黑色主题耗时多久黑屏 运行时卡顿优化 1、耗时操作不要放在主线程 2、自定义控件ondraw中不要做耗时操作,1000ms / 60帧 = 16.6666... 如果16ms的时间没来得及绘制就掉帧,表现为卡顿 二、内存优化 传送门: https://blog.csdn.net/zhangzhuo1024/article/details/89599446 三、apk体积优化 1、冗余代码删除。随着项目功能修改,会有很多冗余的废代码,及时删除 2、冗余资源删除。没有用的图片,布局全部删除;androidstudio 文件夹右键->Refactor->Remove Unused Resource. 3、图片优化。传送门: https://blog.csdn.net/zhangzhuo1024/article/details

2018年Android面试题含答案--适合中高级(下)

半世苍凉 提交于 2020-05-05 12:04:21
1、Activity生命周期? onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDetroy() 2、Service生命周期? service 启动方式有两种,一种是通过startService()方式进行启动,另一种是通过bindService()方式进行启动。不同的启动方式他们的生命周期是不一样. 通过startService()这种方式启动的service,生命周期是这样:调用startService() --> onCreate()--> onStartConmon()--> onDestroy()。这种方式启动的话,需要注意一下几个问题,第一:当我们通过startService被调用以后,多次在调用startService(),onCreate()方法也只会被调用一次,而onStartConmon()会被多次调用当我们调用stopService()的时候,onDestroy()就会被调用,从而销毁服务。第二:当我们通过startService启动时候,通过intent传值,在onStartConmon()方法中获取值的时候,一定要先判断intent是否为null。 通过bindService()方式进行绑定,这种方式绑定service,生命周期走法:bindService--

一款聚合电影、电视剧、综艺节目、动漫、游戏影音软件开源啦!

会有一股神秘感。 提交于 2020-04-30 11:34:01
今天主要分享lxw开源他的聚合软件:影视天地(Android 客户端),涵盖电影、电视剧、综艺节目、动漫、游戏五大类别的资源。整合两大资源搜索引擎,连接互联网千万数量级的资源库。支持视频资源在线播放、边下边播,不限速下载,不等待播放。 项目特色:本项目实现了资源列表、详情、搜索,切换资源库、搜索引擎,跳转第三方软件下载、热修复、推送分享等核心功能,应用 Retrofit2+RxJava2+Glide 等主流框架。二次封装网络请求框架,实现异常和错误的统一处理,集成微信分享、极光推送、阿里第二代热修复框架 HotFix2。 效果图如下: 启动页 首页 情页 搜索页 切换主题 部分代码: 常量类: public class Constant { public static ConfigModel configModel; /** * 网络请求 */ public static String SOURCE_TYPE; public static final String KEY_SOURCE_TYPE = "SOURCE_TYPE" ; public static final String SOURCE_TYPE_1 = "1" ;// 飘花电影 public static final String SOURCE_TYPE_2 = "2" ;// 猫扑电影 public static

一款使用RxJava+Retrofit+MVP的快播App开源啦!

送分小仙女□ 提交于 2020-04-18 12:24:13
《快播》,仿网易云音乐UI,整体采用RxJava+Retrofit+MVP的架构,支持在线视频播放,在线图片浏览等功能。 用到第三方开源库: ButterKnife:依赖注入框架 glide:图片加载 retrofit:网络请求 jieCaoVideoPlayer:播放器 抓取接口用于数据展示 效果图如下: 基类: package com.zmj.qvod.base; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Toast; public abstract class

仿知乎列表广告栏:在RecyclerView中实现大图片完整展示的视差效果(优雅地插入全屏广告图)

白昼怎懂夜的黑 提交于 2020-04-15 10:45:16
【推荐阅读】微服务还能火多久?>>> github地址:https://github.com/giswangsj/RvParallaxImageView 欢迎star 一,前言 在xx地铁app(可在地铁上提供wifi)上看到过类似如下的效果: ​ 在recyclerview中,某一个item位置显示广告图片,广告图是可以填充屏幕的大图,recyclerview滚动时,图片的显示区域可以跟着滚动。这个功能完美解决了:在位置空间不足的情况下展示一张完整广告图的需求。 ​ 于是乎就有了 RvParallaxImageView . RvParallaxImageView 没有任何侵入性 ,默认提供了加载resource中的drawable、和加载本地磁盘上的图片两种方式。并且提供了灵活的扩展方式,可以利用自己项目中的图片加载库进行加载。 ​ 比如你使用 Glide 或 Picasso 网络加载框架加载网络图片,可以使用 GlideImageController / PicassoImageController 进行加载,请参看demo。 ​ 当然你也可以自定义Controller来使用其他图片加载框架进行加载。 ​ 总结: PicassoImageController 具有使用简单,扩展方便等特点。 二,使用 ​ 为了不对你的代码由任何侵入性,

仿知乎列表广告栏:在RecyclerView中实现大图片完整展示的视差效果(优雅地插入全屏广告图)

你离开我真会死。 提交于 2020-04-15 10:23:48
【推荐阅读】微服务还能火多久?>>> github地址:https://github.com/giswangsj/RvParallaxImageView 欢迎star 一,前言 在xx地铁app(可在地铁上提供wifi)上看到过类似如下的效果: ​ 在recyclerview中,某一个item位置显示广告图片,广告图是可以填充屏幕的大图,recyclerview滚动时,图片的显示区域可以跟着滚动。这个功能完美解决了:在位置空间不足的情况下展示一张完整广告图的需求。 ​ 于是乎就有了 RvParallaxImageView . RvParallaxImageView 没有任何侵入性 ,默认提供了加载resource中的drawable、和加载本地磁盘上的图片两种方式。并且提供了灵活的扩展方式,可以利用自己项目中的图片加载库进行加载。 ​ 比如你使用 Glide 或 Picasso 网络加载框架加载网络图片,可以使用 GlideImageController / PicassoImageController 进行加载,请参看demo。 ​ 当然你也可以自定义Controller来使用其他图片加载框架进行加载。 ​ 总结: PicassoImageController 具有使用简单,扩展方便等特点。 二,使用 ​ 为了不对你的代码由任何侵入性,

玩安卓必须要掌握的性能优化之内存优化

两盒软妹~` 提交于 2020-04-14 13:26:30
【推荐阅读】微服务还能火多久?>>> 前言 这是我写的性能优化的第三篇文章,下面是另外两篇文章: 玩安卓必须要掌握的性能优化之内存泄漏 玩安卓必须要掌握的性能优化之APK极限压缩 正文 本篇文章准备详细说一下编码中需要注意的地方,养成良好的编码习惯。 第一点 数据类型 尽量不要使用比需求更占空间的基本数据类型,比如能用 int 就不使用 long,能用 float 就不使用 double,可以减少内存的开销,虽然几乎对程序产生不了太大影响,但是还是要尽量避免。 还有就是自动装箱尽量少用。 第二点 循环 循环尽量使用增强for循环(for each),少用迭代器(iterator) 第三点 数据结构与算法 这一点是最重要的,但也是最难的,其实也不难,关键看能不能坚持下来。每天看一道算法题,半年基本上就能提升非常大的一截。数组、链表、树、栈、图。。。。 还有一点是咱们经常使用的HashMap,写的时候非常自然,直接就写出来了,但是占用内存较大,Android官方为安卓开发者提供了SparseArray(key为整数),当数据量在千级以下可以使用,它的性能虽然不如HashMap但节约内存;千级以上还是使用我们熟悉的HashMap吧。 第四点 枚举优化 曾几何时,因为安卓官方二点几的一句话(图在下方),几乎所有的安卓性能优化中都会有这么一句,但我想说的是,随着硬件的提升