- 博客(163)
- 收藏
- 关注
原创 Android M Launcher3主流程源码浅析,爆火的Android面试题
LauncherAppState:单例对象,构造方法中初始化对象、注册应用安装、卸载、更新,配置变化等广播。这些广播用来实时更新桌面图标等,其receiver的实现在LauncherModel类中,LauncherModel也在这里初始化。LauncherModel:数据处理类,保存桌面状态,提供读写数据库的API,内部类LoaderTask用来初始化桌面。InvariantDeviceProfile:一些不变的设备相关参数管理类,其内部包涵了横竖屏模式的DeviceProfile。WidgetPre
2022-02-06 12:50:02 562
原创 Android LiveData实现原理,安卓面试题最新2020
Google LiveData 概览LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。LiveData本身是观察者,观察组件的Lifecycle,也是被观察者,数据变化时要通知数据的观察者。可以先了解 Android Lifecycle实现原理,有利于了解LiveDa.
2022-02-06 12:48:37 342
原创 Android 启动优化: JetPack App Startup 使用及源码浅析
6 return ExampleLogger(WorkManager.getInstance(context))7 }89 override fun dependencies(): List<Class<out Initializer<*>>> {10 // Defines a dependency on WorkManagerInitializer so it can be11 // initialized
2022-02-05 10:24:50 498
原创 Android 启动优化(六)- 深入理解布局优化,字节跳动Android实习面试凉凉经
代码编写的方式编写布局,我们可能想到使用 java 声明布局,对于稍微复杂一点的布局,这种方式是不可取的,存在维护性查,修改困难等问题。为了解决这个问题,github 上面诞生了一系列优秀的开源库。lithoX2C为了即保留xml的优点,又解决它带来的性能问题,我们开发了X2C方案。即在编译生成APK期间,将需要翻译的layout翻译生成对应的java文件,这样对于开发人员来说写布局还是写原来的xml,但对于程序来说,运行时加载的是对应的java文件.我们采用APT(Annotation Pr
2022-02-05 10:23:25 180
原创 Android 利用ViewPager+GridView,仿美团首页导航栏分类布局界面
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Log.i(“TAG”, “position:” + position);ViewHolder vh = null;if (convertView == null) {convertView = mLayoutInflater.inflate(R.layout.item_gridview_header, parent, false);vh
2022-02-05 10:20:34 395
原创 Android 使用Palette获取Gallery图片主色调,androidstudio开发app
}读取Gallery图片其中需要注意的一点,在API 23以上设备上需要动态申请外部存储读写权限,否则在BitmapFactory.decodeFile会返回null。private void pickImageAndPalette() {int permissionWrite = ActivityCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE);if (permis
2022-02-05 10:19:09 325
原创 Android 仿淘宝物流信息TimeLineView,阿里资深Android开发带你入门Framework
/**时间轴的节点的半径*/private int timelineRadius;/**时间轴节点之间的距离*/private int timelineRadiusDistance;/**时间轴的宽度*/private int timelineWidth;/**时间轴的高度*/private float timeLineViewHeight;public TimeLineView(Context context) {this(context, null);
2022-02-05 10:17:44 219
原创 android 仿微信通知栏,移动开发基础学习
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(appContext).setSmallIcon(appContext.getApplicationInfo().icon).setSmallIcon(R.mipmap.icon_app_small).setWhen(System.currentTimeMillis()).setColor(Color.parseColor("#4e60c4")).setAuto
2022-02-05 10:16:19 403
原创 android webView 的WebSettings说明,android开发环境搭建步骤
setDomStorageEnabled (boolean flag)DOM存储API是否可用,默认false。setEnableSmoothTransition (boolean enable)已废弃,将来会成为空操作(no-op),设置当panning或者缩放或者持有当前WebView的window没有焦点时是否允许其光滑过渡,若为true,WebView会选择一个性能最大化的解决方案。例如过渡时WebView的内容可能不更新。若为false,WebView会保持精度(fidelity),.
2022-02-05 10:14:54 987
原创 Android UI--开源项目IndexableListView(字母索引),Android最新实习面试经验总结
android:layout_height=“fill_parent”android:id="@+id/listview" />Activitypackage com.woozzu.android.indexablelistview;import java.util.ArrayList;import java.util.Collections;import java.util.List;import android.app.Activity;import android.conten
2022-02-05 10:13:29 125
原创 Android studio实现画板功能,移动端网页开发框架
canvas = new Canvas(bitmap);canvas.drawColor(Color.argb(100,0,0,0));paint = new Paint();paint.setStrokeWidth(5);paint.setAntiAlias(true);paint.setColor(Color.RED);canvas.drawBitmap(bitmap,new Matrix(),paint);imageview.setImageBitmap(bitmap);注册触摸监听事
2022-02-04 11:14:30 415
原创 Android studio 插件之 GsonFormat (自动生成javabean)
粘贴完成后 点击ok会弹出如下图所示的选择 字段界面这个界面是让你自己选择 保留哪些字段,可能有的字段不需要 就把前面的对勾去掉就可以了。最后点击ok,大功告成。贴上json字符串和自动生成出的bean代码.json字符串{“retval”:“ok”,“reterr”:"",“retinfo”:{“count”:2,“groups”:[{“groupid”:1,“title”:"\u65b0\u670b\u53cb",“icon”:“http://aliimg.yizhibo.tv/online.
2022-02-04 11:11:40 3824
原创 Android Studio 快捷键大全,安卓面试问题和答案
| 使用当前配置文件检查当前文件 | Alt+Shift+I | Option+Shift+I || 快速切换方案 | Ctrl+`(反引号) | Ctrl+`(反引号) || 打开设置对话框 | Ctrl+Alt+S | Command+,(英文逗号) || 打开项目结构对话框 | Ctrl+Alt+Shift+S | Command+;(英文分号) || 在标签页和工具窗口之间切换 | Ctrl+Tab | Ctrl+Tab || 在 Studio 内导航和搜索 || 搜索全部内容(包括代码
2022-02-04 11:10:15 2564
原创 Android Spinner下拉框使用,android开发语言
绿色黄色红色紫色粉红色薄荷色2.MainActivity.java,Spinner下拉框使用public class MainActivity extends AppCompatActivity {private Spinner sp_color_black;private TextView mtextview;private int color_black;@Overrideprotected void onCreate(Bundle savedInstanceState) {
2022-02-04 11:08:49 163
原创 Android RecyclerView 绘制流程及Recycler缓存,《Android面试题及解析》分享给大家
…while ((layoutState.mInfinite || remainingSpace > 0) && layoutState.hasMore(state)) {layoutChunkResult.resetInternal();if (RecyclerView.VERBOSE_TRACING) {TraceCompat.beginSection(“LLM L
2022-02-04 11:07:24 238
原创 android phonegap插件开发方法 plugin,vue数据双向绑定
“id”: “org.apache.cordova.vibration.notification”,“merges”: [“navigator.notification”]},{“file”: “plugins/intent.js”,“id”: “org.apache.cordova.intent”,“merges”: [“navigator.intent”]},];module.exports.metadata =// TOP OF METADATA{“org.apache
2022-02-04 11:05:59 180
原创 Android 总结:自定义键盘实现原理和三种实例详解,android输入法开发
| android:verticalCorrection | Amount to offset the touch Y coordinate by, for bias correction. |我们需要建一个xml文件,来布局我们的视图,一般是在res文件夹中建一个名为xml的文件夹,在里面新建立一个xml布局文件。每一个按键的属性主要包括android:codes=" " 和 android:keyLabel=""Activity 就是根据 codes 的值来监听的。一些可以自定义设置
2022-02-03 14:33:19 1749 1
原创 Android 总结:Manifest文件中,application和activity标签属性详解
表明这个应用准备尝试恢复所有的备份数据集合,甚至如果备份数据是比当前安装的应用高的编号存储的。设置为true将允许备份管理者去尝试恢复当版本不匹配,意思是数据冲突。要小心使用。默认为false。android:taskAffinity提供给应用下所有组件的类同名称,除了设置了自己的taskAffinity属性的组件。默认情况下所有的组件使用相同的affinity。Affinity的名称和在< manifest />元素中设置的包名相同。android:theme为应用下的
2022-02-03 14:31:54 1501
原创 Android 性能优化:手把手带你全面了解内存泄露,安卓ndk开发书籍
// 通过 循环申请Object 对象 & 将申请的对象逐个放入到集合ListList objectList = new ArrayList<>();for (int i = 0; i < 10; i++) {Object o = new Object();objectList.add(o);o = null;}// 虽释放了集合元素引用的本身:o=null)// 但集合List 仍然引用该对象,故垃圾回收器GC 依然不可回收该对象解决方案 集合类 添加集合元素
2022-02-03 14:30:29 165
原创 Android 开发艺术探索笔记(18),android音视频面试题
在try中有个ActivityManagerNativt.getDefault,就是通过它的startActivty方法完成,而它是继承自Binder并实现了IActivityManager,因此它的具体实现是ActivityManagerService,在AMN中,AMS这个binder对象采用单例模式对外提供,Singleton是一个单例的封装类,第一次调用它的get方法时,它会通过create方法来初始化AMS这个Binder对象,在后续的调用中直接返回之前创建的对象。里面还有一个checkStart
2022-02-03 14:29:04 149
原创 Android 常用正则表达式,阿里巴巴内部spring宝典意外流出
19 浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$二、校验字符的表达式1 汉字:1{0,}$2 英文和数字:2+$ 或 3{4,40}$3 长度为3-20的所有字符:^.{3,20}$4 由26个英文字母组成的字符串:4+$5 由26个大写英文字母组成的字符串:5+$6 由26个小写英文字母组成的字符串:6+$7 由数字和26个英文字母组成的字符串:7+$8 由数字、26个英文字母或者下划线组成的字符串:^\
2022-02-03 14:27:39 2530
原创 android 使用Retrofit请求网络,android组件化开发
public class HResult extends HBaseResult {public Object data;}对编写后台返回的数据javabean(注意要继承HBaseResult )public class HLoginBean extends HBaseResult {private String openId;private int hasNickNameHeadUrl;private String token;private int hasPhone;@Overrid
2022-02-03 14:21:59 140
原创 Android 错误信息捕获发送至服务器,手机软件开发app
</intent-filter></activity></application></manifest>CrashHandler类如下:import java.io.File; import java.io.FileOutputStream; import java.lang.Thread.UncaughtExceptionHandler; import android.content.Context; import an
2022-02-02 13:05:27 1282
原创 Android 进阶之 MVP,android学习网站
void onUsernameError();void onPasswordError();void onSuccess();}public void login(final String username, final String password, final OnLoginFinishedListener listener) {mHandler.postDelayed(new Runnable() {@Overridepublic void run() {if (TextUtils.
2022-02-02 13:04:02 737
原创 android 跳转第三方地图(百度,高德,Android程序员最新职业规划
现在我们在做app的时候除了功能性以外,还会考虑开发时间和开发成本 ,所以很多功能我们可以技巧性的避开自己开发,直接跳转到三方软件。比如 地图的导航功能,我们完全可以不必集成三方的sdk,这样做的好处有几点1.减少自身开发成本2.减少项目及app大小3.功能性自己做不如三方app的全面但是同时也有弊端就是一些客户倘若没有安装任何一款三方的地图软件 这样的话可能使用时会有一些不方便,但是感觉这种用户比较少,即使没有安装,也可以跳转到应用市场对应的三方软件下载界面。话不多
2022-02-02 13:02:37 7658
原创 Android 解决65536,震撼来袭
targetSdkVersion 30multiDexEnabled true}…}dependencies {implementation “androidx.multidex:multidex:2.0.1”}不使用AndroidX(已弃用)android {defaultConfig {…minSdkVersion 15targetSdkVersion 30multiDexEnabled&nb
2022-02-02 13:01:12 267
原创 Android 组件化架构概要,熬夜整理Android高频面试题
模块 :指具体的业务逻辑模块,比如微信主页的四个页面,我们就可以定义为四个模块,由于模块的对象是业务,所以比组件的广度来讲要大许多,因为随着他的业务进展,他会包含越来越多的组件。库 :单一职责的提供某个或者某些功能。有了这些概念,就会诞生出很多的抽象名称,比如组件化,模块化,插件化等,追源溯本你会发现,其实他们的出发点,都是为了架构的不断演进而努力,只是趋向于目标不一致,所以文章开头我才说MVC,MVP之类的是针对代码的解耦,也就是让代码看得更加的清晰,一个View中实现一个Pres
2022-02-02 12:58:22 331
原创 Android 硬布局item的高级写法,腾讯Android开发面试
<Viewandroid:layout_width=“match_parent”android:layout_height=“1dp”android:layout_marginStart="@dimen/dp_50"android:background="@color/color_F6F6F6" /><LinearLayoutandroid:id="@+id/ll2"android:layout_width=“match_parent”android:layout_hei.
2022-02-02 12:56:57 172
原创 Android 点击Url(短信链接)打开App,技术协会安卓部面试
1、Intent 过滤器============1、 测试一下=======通过手机的短信、便签等方式通过点击地址(https://www.myapp.com)(www.myapp.com)就可以直接唤起我们自己的APP了也可以通过命令行工具adb shell am start -W -a android.intent.action.VIEW -d “https://www.myapp.com”这样我们就实现了点击了一个链接,跳转到了我们的App2、遇到的问题:
2022-02-02 12:55:32 877
原创 Android 渐变圆环,圆形进度条效果实现,android百度地图开发
private void init(AttributeSet attrs, int defStyle) {mFinishWheelPaint = new Paint();mFinishWheelPaint.setColor(Color.rgb(100, 113, 205));mFinishWheelPaint.setStyle(Paint.Style.STROKE);// 空心mFinishWheelPaint.setStrokeCap(Paint.Cap.ROUND);// 圆角画笔mFinis
2022-02-02 12:54:07 257
原创 Android 深入Http(2)加密与编码,我在美团Android研发岗工作的那5年
发送方就是持有原数据的一方,他们会对原数据加密变成密文,然后发送该密文接收方接受传过来的数据的一方,他们会对密文解密,得到可读的原数据盗窃方恶意的嗨客会在网络上截取这些传输的密文,他们可能会通过暴力枚举的手段进行解密。网络安全、加密解密就是为了防止这些嗨客得到密文之后可以轻易的破解。从理论来说,嗨客是不可能拿不到我们的密文的,因为网络传输时数据要经过很多个节点,我们是不能保证每个节点都是100000%安全的,也就是说,可能存在必经的节点是一个嗨客的节点,那么嗨客就能拿到这个密文。.
2022-02-02 12:52:42 862
原创 Android-Shortcuts,让你在系统桌面上为所欲为,腾讯T2亲自讲解
}}最终的运行效果:创建动态快捷方式动态快捷方式提供向指向应用内特定的跳转或数据传递,这些跳转和数据可能会在应用执行中发生变化。此时需要借助 ShortcutManager 提供的 API 来完成动态快捷方式的相应操作:创建: 使用 setDynamicShortcuts() 重新定义动态快捷方式的完整列表添加: 使用 addDynamicShortcut() 来扩充现有的动态快捷方式列表**更新: 
2022-01-31 12:48:43 846
原创 Android-Muitldex热更新修复方案原理,Java+性能优化+APP开发+NDK+跨平台技术
Demo使用方法Demo源码概览热修复核心技术基础知识预备hook思路TIPS热更新技术,不是新话题。目前最热门的热更新由两种,一种是腾讯tinker为代表的 需重启app的热更新,一种是美团app为代表的instant Run,无需重启app. 今天先探究 前者的核心原理。先看效果[github Demo地址] :(https://github.com/18598925736/HotUpdateDemo)假如说这是我们的app界面,这个界面有个bug,我们直接用一个 Tex..
2022-01-31 12:45:53 1050
原创 Android-kotlin的继承,写得太好了
1.先看一个案例,子类使用到父类的资源 【案例一】父类 张翠山:package cn.kotlin.kotlin_oop03/**描述父对象:张翠山personDescribe 此人的简介 / var personDescribe:String 此String是Kotlin的描述行为:gestAction 武功*/// 注意:⚠️ 必须此类默认是不被其他类继承的,如果想被其他类继承 需要加入 open 修饰open class MyFatherClass {// .
2022-01-31 12:44:28 309
原创 Android-Gradle-自动化多渠道打包,android开发前景2019
/**腾讯channel重新构建渠道包*/def reBuildChannel() {File channelFile = file("${app[“channelPath”]}/new")if (!channelFile.exists()) {channelFile.mkdirs()}def cmd = “java -jar ${app[“vasDollyPath”]} put -c ${”…/channel.txt"} ${outputpackersApk()} ${channelFi
2022-01-31 12:43:03 243
原创 Android-Dex分包最全总结:含Facebook解决方案,移动app开发
65536trouble writing output: Too many method references: 70048; max is 65536.或者UNEXPECTED TOP-LEVEL EXCEPTION:java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536at com.android.dx.merge.DexMerger6.updateIndex(DexMerger.java:501)atco
2022-01-31 12:40:13 1308
原创 Android--关闭某个指定activity,android开发框架xui
if (sManager == null) {synchronized (FinishActivityManager.class) {if (sManager == null) {sManager = new FinishActivityManager();}}}return sManager;}/**添加Activity到集合中/public void addActivity(Activity activity) {if (activityList == null) {ac
2022-01-31 12:38:48 791
原创 Android 自定义EditText输入框 带清空按钮,flutter二维码扫描第三方
super(paramContext);initEditText();}public MyEditText(Context paramContext, AttributeSet paramAttributeSet) {super(paramContext, paramAttributeSet);initEditText();}public MyEditText(Context paramContext, AttributeSet paramAttributeSet, int paramInt)
2022-01-31 12:35:58 434
原创 Android-kotlin 抽象类与多态的表现,安卓开发面试自我介绍
继承了Person抽象类,就必须要用override重写父类抽象类的行为*/override fun eat() {println(“老师讲课累,太饿了,在大口大口的吃饭????”)}}描述学生Student对象,学生也属于人类:package cn.kotlin.kotlin_oop05class Student : Person() {/**继承了Person抽象类,就必须要用override重写父类抽象类的行为*/override fun eat() {println(
2022-01-30 14:08:09 888
原创 Android-Jetpack架构组件(二)带你了解Lifecycle,android视频开发框架
}实际上我们不需要全部把这些代码全写进build.gralde进去(当然全写进去也不会有什么错),因为Gradle默认是支持依赖传递的,不知道什么是依赖传递的看Android Gradle (二)签名配置和依赖管理这篇文章。我们直接添加如下依赖就可以满足日常的工作,如果缺少哪个库,再去单独添加就好了。添加这一句代码就依赖了如下的库。2.2 Lifecycle基本用法先不谈Activity和Fragment中如何使用,先举一个Lifecycle的简单例子。public class MyObser
2022-01-30 14:06:43 224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人