自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 收藏
  • 关注

原创 Android 图形驱动初始化(二十三),kotlin协程原理

1#define GL_ENTRY(_r, _api, ...) _r (*_api)(__VA_ARGS__);可以看到 struct gl_hooks_t 的 struct gl_t gl 的所有成员都是函数指针,即它是一个函数表,一个 OpenGL 接口函数的函数表。上面看到的 struct egl_t 与 struct gl_hooks_t 的 struct gl_t gl 定义类似,只是它的结构

2022-02-18 13:27:38 1695

原创 Android 启动优化(六)- 深入理解布局优化,kotlin编程之美

val decorView = this.window.decorViewViewStubTaskManager.instance(decorView).addTask(ViewStubTaskContent(decorView)).addTask(ViewStubTaskTitle(decorView)).addTask(ViewStubTaskBottom(decorView)).start()class ViewStubTaskManager private constructor(val

2022-02-18 13:26:11 386

原创 Android 自带描边颜色渐变炫酷进度条,面试必知必会

3. 画第三个圆角矩形作为进度条的最外层(进度层)盖在背景层之上4. 描边层和背景层颜色可用纯色,进度层为了炫酷可用渐变色这是实现该自带描边颜色渐变进度条的原理,也是在PS中实现该效果的步骤,同样适用于在Android中用代码来实现。原理明白之后,代码就变得非常简单了:public class ColorGradientProgressBar extends View {/**渐变颜色组*/private int[] GRADIENT_COLORS = {Color.parseColor

2022-02-17 18:54:18 929

原创 Android 自定义 View 之 LeavesLoading,kotlin入门书籍推荐

// 计算移动因子float fraction = (float) intervalTime / mLeafFloatTime;leaf.x = (1-fraction)*mProgressLen;leaf.y = getLeafLocationY(leaf);if (leaf.x <= mYellowOvalHeight / 4){//叶子飘到最左边,有可能会超出 RoundRect 边界,所以提前特殊处理leaf.startTime = currentTime + new Random

2022-02-17 18:52:53 1459

原创 Android 控制 ContentProvider的创建,kotlin类型转换

方案1===声明在清单文件中的ContentProvider 会在应用启动后就创建。具体是在 ActivityThread的handleBindApplication方法中。(以下截图为Android 30的ActivityThread)具体就在这一句installContentProviders实现如下最终是通过AppComponentFactory的instantiateProvider方法创建。而AppComponentFactory是Android 28以后系统提供给我们的一个

2022-02-17 18:47:12 184

原创 Android 开发艺术探索笔记(13),Android最新大厂面试真题总结

(4)android:filter是否开启过滤效果。当图片尺寸被拉伸或者压缩时,开启过滤效果可以保持好的显示效果,一般也开启。(5)android:gravity但图片小于容器尺寸时,设置此选项可以对图片进行定位,可选项比较多所以可以通过“|”来组合使用。(6)android:mipMap这是一种图像相关的处理技术,也叫纹理映射,一般为false,日常开发不常用。(7)android:titleMode平铺模式。disabled表示关闭平铺模式、repeat表示简单的水平和竖直方向上的平铺、

2022-02-17 18:45:47 97

原创 Android-Framework:Handler全解析,看完这篇还不懂请给我寄刀片(1)

继而调用sendMessagAtTime方法:public boolean sendMessageAtTime(@NonNull Message msg, long uptimeMillis) {MessageQueue queue = mQueue;if (queue == null) {RuntimeException e = new RuntimeException(this + " sendMessageAtTime() called with no mQueue");Log.w(“Lo

2022-02-16 14:02:44 147

原创 Android 面试必备 - 计算机网络基本知识(TCP,UDP,直面春招

TCP优缺点:优点:可靠,稳定TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。缺点:慢,效率低,占用系统资源高,易被攻击TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。而且,因为TCP有确认机制、三次握手机制,这些也导

2022-02-16 13:54:13 168

原创 Android 设置亮度,安卓面试没项目经验

Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;} catch (Settings.SettingNotFoundException e) {e.printStackTrace();}return automicBrightness;}//停止亮度调节public static void stopAutoBrightness(Activity activity

2022-02-16 13:52:48 164

原创 Android 常见的数据存储方式,三面美团、四面阿里成功斩下offer

“’,age:” + etAge.getText().toString() + “}”;} else {strMsg = “{staff:[{name:’” + etName.getText().toString()“’,age:” + etAge.getText().toString() + “}”;}Toast.makeText(Main.this, “Add Succcess!”, Toast.LENGTH_SHORT).show();etAge.setText("");etN.

2022-02-15 13:57:05 90

原创 Android 使用Palette获取Gallery图片主色调,移动应用开发专业就业方向

将我们的图片Bitmap处理后会生成一系列的Swatch(样本):palette.getMutedSwatch(); // 柔和palette.getLightMutedSwatch(); // 柔和亮palette.getDarkMutedSwatch(); // 柔和暗palette.getVibrantSwatch(); // 活力palette.getLightVibrantSwatch(); // 活力亮palette.getDarkVibrantSwatch(); // 活力暗各个

2022-02-15 13:51:25 236

原创 Android 使用Face++ SDK进行人脸识别和年龄检测,flutter页面跳转数据

import android.os.Message;import android.provider.MediaStore.Images.ImageColumns;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.view.View.OnC

2022-02-15 13:50:00 342

原创 Android开发简易版强制学习程序,kotlin插件

android:textSize=“15pt”android:text="@string/time2"/><TextViewandroid:id="@+id/word"android:layout_width=“wrap_content”android:layout_height=“wrap_content”android:gravity=“center”android:textSize=“15pt”android:text=“Less interests”/><

2022-02-05 11:42:37 137

原创 Android开发中你是怎么查看sqlite数据库的,kotlin协程android

我们想看哪个应用的数据库文件,直接通过Android Studio中自带的Device File Explorer查看即可。上图便是我连接华为荣耀V9手机,通过Device File Explorer查看应用的截图,下面我们随便找个测试应用,查看一下数据库。我们点开自己的测试应用,包名/databases/目录下,看到了我们的数据库db文件,并且该文件前面有一个小图标和我们的SQLScout插件图片一样,说明我们可以通过SQLScout插件打开该数据库db文件。(没装插件我们一般都是把db文件导出到

2022-02-05 11:38:22 6154

原创 Android开发UI新技能,你get这个新技能了吗?(附源码详解)

Text(text = “众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。”)2. 文本输入框val state = +state { “Text Field to input” }TextField(value = state.value,onValueChange = { state.value = it })3. 按钮Button(text = “咬我啊”, onClick = { Log.v(“test”, “被咬了”) })4.弹出框MaterialTheme {.

2022-02-05 11:36:58 106

原创 Android开发11年,分享一下我眼中程序员的三六九等,阿里Android岗面试百题

高级对于高级,就不仅限于功能和业务开发,还需要深入理解Android系统的运行原理,达到融会贯通,部分可够作为Android端架构师。这一阶段的人大多工作5-8年,具备开源库设计能力,同时对于Android系统的运行原理也比较了解。掌握java高级特性,如JUC、线程池、NIO\BIO等;掌握jvm虚拟机知识,如内存模型、GC原理、* * 类加载机制、线程模型等。对Android运行环境有深入理解,理解Android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原

2022-02-05 11:35:33 107

原创 Android应用程序反编译,阿里巴巴开发规范手册

**生成classes.dex.dex2jar.jar3.运行JD-GUI工具(绿色无须安装的)打开上面的jar文件,即可看到源代码**---------------------------------------------------------------------------------二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件。工具下载:在http://code.google.com/p/android-apktool/下载获得,apktool-1.0.0.t

2022-02-05 11:34:08 158

原创 Android应用开发-小巫CSDN博客客户端之获取评论列表,移动应用开发专业前景工资

backBtn = (ImageView) findViewById(R.id.backBtn);backBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {finish();}});commentTV = (TextView) findViewById(R.id.comment);listView = (XListView) findViewById(R.id.listvie

2022-02-05 11:31:18 120

原创 android优化 清除无效代码 UCDetector,最新BAT大厂面试者整理的Android面试题目

(四)筛选为了方便查找   对 problem 中的结果进行筛选 分类选择  倒三角 → 弹窗  → Group By → Type如图:(五)优化根据提示  找到相对应的类  进行删除例如下图中的 类  BaseActivity如图:双击problem中的条目进入相应的类 :(六)结束插件使用要注意:反射 、在xml中配置注入方式、第三方工程的应用 、jar包调用   等 需要自己手工判断建议删.

2022-02-04 12:30:53 1061

原创 Android主流三方库源码分析:Leakcanary,移动端跨平台开发工具

}// 6LeakCanaryInternals.installedRefWatcher = refWatcher;return refWatcher;}复制代码首先,在注释1处,会判断LeakCanaryInternals.installedRefWatcher是否已经被赋值,如果被赋值了,则会抛出异常,警告 buildAndInstall()这个方法应该仅仅只调用一次,在此方法结束时,即在注释6处,该LeakCanaryInternals.installedRefWatcher才会被赋值。再

2022-02-04 12:28:03 9233

原创 android中的UI中的窗口之Window类介绍,android开发前景

public boolean dispatchKeyEvent(KeyEvent event);public boolean dispatchKeyShortcutEvent(KeyEvent event);public boolean dispatchTouchEvent(MotionEvent event);public boolean dispatchTrackballEvent(MotionEvent event);public boolean d..

2022-02-04 12:26:38 1894

原创 Android中两种实现底部Tab的方法,Android开发谈

android:layout\_width\="fill\_parent" android:layout\_height\="fill\_parent" \> <FrameLayout android:id\="@android:id/tabcontent" android:layout\_width\="fill\_parent" androi...

2022-02-04 12:25:13 778

原创 Android中RelativeLayout和LinearLayout性能分析,企业微信移动应用

applyVerticalSizeRules(params, myHeight);measureChild(child, params, myWidth, myHeight);if (positionChildVertical(child, params, myHeight, isWrapContentHeight)) {offsetVerticalAxis = true;}if (isWrapContentWidth) {if (isLayoutRtl()) {if (targetSdkVe

2022-02-04 12:23:48 87

原创 android—ListView与RecyclerView滑动显示和隐藏浮动按钮

isRightOut = true;ta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1f,Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0);ta.setDuration(500);ta.setFillAfter(true);this.startAnimation(ta);this.setClicka

2022-02-04 12:20:58 435

原创 Android—adb命令大结局,吊打面试官系列

adb shell dumpsys activity4、查看Android应用包名package和入口activity名称 :aapt dump badging E:\apk\es3.apk5、显示accounts信息:adb shell dumpsys account5、显示CPU信息 :adb shell dumpsys cpuinfo查看CPU使用信息adb shell top -n 1 -d 0.5 | findstr proc_ id6、显示键盘,窗口和它们的关系adb she

2022-02-04 12:19:34 230

原创 Android11文件存储,嵌入式软件开发面试题

if (i != PackageManager.PERMISSION_GRANTED) {// 提示用户应该去应用设置界面手动开启权限} else {context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(filePath)));}} else {context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FIL

2022-02-04 12:18:08 1289

原创 Android开发中混淆后Gson序列化、反序列化的那些坑,kotlin密封接口

JNI 中调用的类。WebView 中JavaScript调用的方法Layout 布局使用的 View 构造函数、android:onClick等。检查混淆结果====================================================================混淆过的包必须进行检查,避免因混淆引入的 bug。一方面,需要从代码层面检查。使用上文的配置进行混淆打包后在<module-name>/build/outputs/mapping/releas

2022-02-03 15:51:05 348

原创 Android开发三年,面了八家公司终于腾讯上岸,含泪整理面经

11.丢帧的原因。12.帧数计算。13.设计如何检测过度绘制的工具,要具体到view。14.blockcanary原理,目的。15.listview的滑动优化,比如一个kmoji可以用textview渲染,也可以用imageview渲染,哪个更优。16.toast为什么不需要权限就可以显示。17.badwindowtoken的原因。18.怎么实现悬浮窗。启动加速1.怎么做app启动加速我的回答说利用intentService,就是异步加载机制。但是还不够。2.引导我从app启动流程开始

2022-02-03 15:48:16 140

原创 Android开发UI新技能,你get这个新技能了吗?(附源码详解)

val state = +state { “Text Field to input” }TextField(value = state.value,onValueChange = { state.value = it })3. 按钮Button(text = “咬我啊”, onClick = { Log.v(“test”, “被咬了”) })4.弹出框MaterialTheme {Column {val openDialog = +state { false }Button(“

2022-02-03 15:46:50 765

原创 Android底部导航栏实现,flutter项目结构

}if (mFrag3 != null) {transaction.hide(mFrag3);}if (mFrag4 != null) {transaction.hide(mFrag4);}}//将四个ImageButton置为灰色private void resetImgs() {mImg1.setImageResource(R.mipmap.icon2);mImg2.setImageResource(R.mipmap.icon2);mImg3.setImageResource(R

2022-02-03 15:45:26 221

原创 Android应用开发之PNG、IconFont、SVG图标资源优化详解

android:text="@string/icon_font_add" />接着给该TextView指定使用IconFont的文字文件。如下:Typeface iconfont = Typeface.createFromAsset(getAssets(), “iconfont.ttf”);TextView textview = (TextView)findViewById(R.id.test);textview.setTypeface(iconfont);至此IconFont的使用就搞定了

2022-02-03 15:44:00 514

原创 Android应用开发-小巫CSDN博客客户端开发开篇,玩转MySQL

本篇博客是关于这款应用的开发的起始篇,主要简单介绍一下整个项目的概况,整体大纲如下:1. 项目起因2. 项目效果展示3. 项目文档结构和依赖库说明4. 项目功能简介5. 系列博客分享后期计划一、项目起因笔者开发这么一款客户端也是兴趣使然,因为CSDN官方并没有一款可供笔者实用的客户端,笔者就想着如何来开发一款客户端让自己方便在手机上查看博文,寻找了一圈,后来在CSDN博客上发现了一位大神所开发的CSDN资讯的客户端,并研究了其里面的实现。本人博客的主界面效果跟资讯客户端类似,只是进行了相关的

2022-02-03 15:42:35 182

原创 Android平台版本-API级别与版本号对照表,移动开发技术导论答案

| Android 5.0 | 21 | [LOLLIPOP]( ) || Android 4.4W | 20 | [KITKAT_WATCH]( ) | 仅限 KitKat for Wearables || Android 4.4 | 19 | [KITKAT]( ) | 平台亮点 || Android 4.3 | 18 | [JELLY_BEAN_MR2]( ) | 平台亮点 || Android 4.2、4.2.2 | 17 | [JELLY_BEAN_MR1]( ) | 平台亮点 || A

2022-02-03 15:41:10 306

原创 Android工程化实践:组件化发布,android离线地图开发

3. 如何发布组件(artifacts)?========================================================================================在 Gradle 中发布组件,可以使用以下两个 Maven 插件:Maven Plugin(旧版)Maven Publish Plugin3.1 发布到本地仓库我们需要使用 Maven 插件的uploadArchives任务,并且需要指定组件的信息。例如:模块级 b.

2022-02-03 15:39:46 1015

原创 Android提供的LruCache类简介,html5移动开发即学即用

/** Size of this cache in units. Not necessarily the number of elements. */private int size; //已经存储的大小private int maxSize; //规定的最大存储空间private int putC..

2022-02-02 14:21:50 175

原创 Android指纹识别API讲解,一种更快更好的用户体验,android开发蓝牙传数据

事实上,Android 从 6.0 系统开始就支持指纹认证功能了,但是指纹功能还需要有硬件支持才行,而 Android 手机的硬件都是由各厂商生产的,手机档次也参差不齐,因此不能像 iPhone 那样保证所有的手机都是支持指纹认证功能的。所以,可能很多开发者就觉得,即使做了指纹认证功能,也无法兼容所有的手机,还是要配合图案解锁或密码等功能一起使用才行,那么索性就只用图案和密码好了,一劳永逸。看似这样解释好像也合情合理,但其实受伤的是数以亿计的 Android 手机用户。明明有更轻松更快捷的使用方式,却因.

2022-02-02 14:20:25 1809

原创 Android技术背后涉及到了多少知识点?,30分钟轻松入门flutter

无需重新发布版本;用户无感知修复,代价小;修复成功率高,把损失降到最低。不足:补丁只能针对单一客户端版本,随着版本差异变大补丁体积也会增大;补丁不能支持所有的修改,例如AndroidManifest;补丁无论对代码还是资源的更新成功率都无法达到100%。3、常用热修复框架Dexposed: 阿里= >开源=>实时修复Andfix:阿里=>开源= >实时修复阿里百川HotFix:阿里= >未开源=>实时修复Qzone超级补丁: QQ空间=

2022-02-02 14:19:00 88

原创 Android截屏方案,androidframework面试

} else {//不足一屏时的处理int leftHeight = finalShotHeight - drawOffset[0] - footHight;mRecyclerView.scrollBy(0, leftHeight);int top = oneScreenHeight - (finalShotHeight - drawOffset[0]);if (top > 0 && leftHeight > 0) {Bitmap bitmap = Bitmap.cr

2022-02-02 14:17:35 148

原创 Android性能优化来龙去脉总结,移动端h5页面适配

6、资源加载导致执行缓慢。有些时候避免不要加载一些资源,这里有两种解决的办法,使用的场景也不相同。a、预加载,即还没有来到路径之前,就提前加载好,诶,好像x5内核就是酱紫哦。b、实在是要等到用到的时候加载,请给一个进度条,不要让用户干等着,也不知道什么时候结束而造成不好的用户体验。7、工作线程优先级设置不对,导致和ui线程抢占cpu时间。使用Rxjava的小伙伴要注意这点,设置任务的执行线程可能会对你的性能产生较大的影响,没有使用的小伙伴也不能太过大意。8、静态变量。嘿嘿,大家一定有过在app

2022-02-02 14:16:10 183

原创 Android性能优化之冷启动优化,安卓android开发

冷启动(Cold start)场景:冷启动是指APP在手机启动后第一次运行,或者APP进程被kill掉后在再次启动。可见冷启动的必要条件是该APP进程不存在,这就意味着系统需要创建进程,APP需要初始化。在这三种启动方式中,冷启动耗时最长,对于冷启动的优化也是最具挑战的。因此本文重点谈论的是对冷启动相关的优化。生命周期:Process.start->Application创建->attachBaseContext->onCreate->onStart->onResume-

2022-02-02 14:14:45 601

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除