自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 10(Q)_11(R) 分区存储适配,不断提升自己创造溢价的能力

通过 MediaStore API对媒体集、文件集进行媒体/文件的添加、对 自身APP 创建的 媒体/文件 进行查询、修改、删除的操作。需要申请READ_EXTERNAL_STORAGE 权限:通过 MediaStore API对所有的媒体集进行查询、修改、删除的操作。调用 Storage Access Framework API :会启动系统的文件选择器向用户申请操作指定的文件新的访问方式:Android 11 ®:Android 11 ® 在 Android 10 (Q) 中

2021-12-21 15:21:17 1494

原创 Android - LayoutParams,小火箭,高内聚低耦合,androidndk开发pdf

case MotionEvent.ACTION_DOWN://按下startX = (int) event.getRawX();startY = (int) event.getRawY();break;case MotionEvent.ACTION_MOVE://移动int newX = (int) event.getRawX();int newY = (int) event.getRawY();int dx = newX - startX;int dy = newY - startY;p

2021-12-21 15:17:42 300

原创 Activity的启动和创建,成功拿下大厂offer

在应用程序中用到的所有activity都需要在manifest.xml文件中进行注册;那么Activity又是怎样一种组件,怎么样进行显示交互的,一个activity实例是如何被管理和运行起来的,activity生命周期又是怎么一回事。二 Activity框架和管理结构=================Activity管理的核心是AcitivityManagerService,是一个独立的进程;ActiveThread是每一个应用程序所在进程的主线程,循环的消息处理;ActiveThr

2021-12-21 15:14:27 262

原创 Activity 的启动模式,kotlin参数默认值

在默认情况下,同一应用中的所有 Activity 会具有相同的亲和性,所有 Activity 默认会以当前应用的 applicationId 作为自己的 taskAffinity 属性值。我们可以手动为应用内的部分 Activity 指定特定的 taskAffinity,从而将这部分 Activity 进行分组<activityandroid:name=".StandardActivity"android:launchMode=“standard”android:taskAffinity=“t

2021-12-21 15:12:15 229

原创 A022-列表容器之ExpandableListView,android应用程序开发教程

- 继承BaseExpandableListAdapter并实现以下方法- getGroupCount(获取组项的个数)- getChildrenCount(获取子项个数)- getGroup(获取组对象)- getChild(获取子对象)- getGroupId(获取组项id)- getChildId(获取子项id)- hasStableIds(组和子元素是否持有稳定的ID)- getGroupView(获取显示指定组的视图对象)- getChildView(获取显示指定项的视图对象)

2021-12-21 15:10:24 169

原创 A012-anim资源,成为阿里P7移动架构师到底有多难

android:shareInterpolator=[“true” | “false”] ><alphaandroid:fromAlpha=“float”android:toAlpha=“float” /><scaleandroid:fromXScale=“float”android:toXScale=“float”android:fromYScale=“float”android:toYScale=“float”android:pivotX=“float”and

2021-12-21 15:08:19 80

原创 Android MediaCodec 硬编码 H264 文件,androidjni开发MK

当创建了 MediaCodec 之后,是处于未初始化的 Uninitialized 状态,调用 configure 方法之后就处于 Configured 状态,调用了 start 方法之后,就处于 Executing 状态。在 Executing 状态下开始处理数据,它又有三个子状态,分别是:FlushedRunningEnd of Stream当一调用 start 方法之后,就进入了 Flu

2021-12-20 11:35:56 220

原创 android LifeCycle-简单使用和详细原理解析,Android开发必看

Lifecycle 用于存储有关组件(如 Activity 或 Fragment)的生命周期状态的信息,并允许其他对象观察此状态。更通俗的说,你可一通过注册回调的方式,拿到我们activity的所有生命周期方法回调下图展示了观察生命周期的机制的所有类型使用方法总的来说LifeCycle的使用非常简单,基本没什么好写的,使用方法的章节仅限于绝对新手参考。说是徒劳的,先上一波简单使用的代码吧代码展示class MainActivity : AppCompatActivity() {overri

2021-12-20 11:34:04 1404

原创 Android Handler相关面试题你能答对多少?子线程和主线程是如何切换的?

synchronized (sPoolSync) {if (sPool != null) {Message m = sPool;sPool = m.next;m.next = null;m.flags = 0; // clear in-use flagsPoolSize–;return m;}}return new Message();}2.当Activity有多个Handler的时候,Message消息是否会混乱?怎么样区分当前消息由哪个Handler处理?不会混乱,哪个Hand

2021-12-20 11:28:12 116

原创 Android Framework学习笔记(十一)WindowManager体系,kotlininline函数

Window mWindow =getWindow();mWindow.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);第三种则是给LayoutParams设置Flag,并通过WindowManager的addView方法进行添加:WindowManager.LayoutParams mWindowLayoutParams = new WindowManage

2021-12-20 11:26:37 402

原创 android Fragment(Android官方文档中文版),androidrom定制

DialogFragment显示一个浮动的对话框.用这个类来创建一个对话框,是使用在Activity类的对话框工具方法之外的一个好的选择,因为你可以将一个fragment对话框合并到activity管理的fragment back stack中, 允许用户返回到一个之前曾被摒弃的fragment.ListFragment显示一个由一个adapter(例如 SimpleCursorAdapter)管理的项目的列表, 类似于 ListActivity.它提供一些方法来管理一个list vie.

2021-12-20 11:24:46 1343

原创 Android Ethernet以太网使用静态IP,Android学习路线

checkStaticIP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {android.provider.Settings.System.putInt(contentResolver, ETHERNET_USE_STATIC_IP

2021-12-20 11:23:08 1578

原创 Android Canvas 方法总结,android高级工程师面试题及答案

/** * 画布向(100,50)方向平移 * * 参数1: 向X轴方向移动100距离 * 参数2: 向Y轴方向移动50距离 */ canvas.translate(100, 50);Canvas缩放/** * 在X轴方向放大为原来2倍,Y轴方向方大为原来的4倍 * 参数1: X轴的放大倍数 * 参数2: Y轴的放大倍数 / canvas.scale(2, 4); /* * 在X轴方向放大为原来2倍,Y轴方向方大为原来的4倍 * 参数1: X轴的放大倍数 * 参数2: Y轴

2021-12-20 11:19:05 1507

原创 Android OkHttp使用和源码详解,flutter跳转到appstore

.cache(cache);      //设置缓存Request request = new Request.Builder().url(url).build();builder.build().newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call&nbsp

2021-12-19 11:56:33 349

原创 Android NDK:在Android Studio下的基本开发步骤和基础知识点总结

/* Header for class com_zhuanghongji_ndkdemo_JNITest */#ifndef _Included_com_zhuanghongji_ndkdemo_JNITest#define _Included_com_zhuanghongji_ndkdemo_JNITest#ifdef __cplusplusextern “C” {#endif/*Class: com_zhuanghongji_ndkdemo_JNITestMethod:

2021-12-19 11:53:04 336

原创 Android NDK 直播推流与引流,程序员面试题网站

Windows 下利用 ffplay 进行引流,命令行执行:ffplay rtmp://192.168.0.0/live/testip 地址换成流媒体服务器的地址, test 表示直播房间号测试结果:2.推流本文直播推流步骤:使用 AudioRecord 采集音频,使用 Camera API 采集视频数据分别使用 faac 和 xh264 第三方库在 Native 层对音频和视频进行编码利用 rtmp-dump 第三方库进行打包和推流工程目录:主要的 JNI 方法:

2021-12-19 11:50:50 149

原创 Android HTTP通信基础,android游戏开发大全第二版代码

zhoumushui     请求资源的URI三、请求由三部分组成,分别是:请求行、消息报头、请求正文。1.请求行:以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF其中:Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单

2021-12-19 11:48:49 93

原创 Android Glide 3,Android事件分发机制收藏这一篇就够了

GlideDrawableImageViewTarget 调用加载的 GifDrawable 来启动动画GifDrawable 会在 draw() 中绘制当前帧, 并委托 GifFrameLoader 去加载下一帧// GlideDrawableImageViewTargetpublic void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> animation) {if (.

2021-12-19 11:47:14 103

原创 Android Framework学习笔记(四)Launcher启动过程,Android开发三年月薪才12K

}return true;}注释1处的mFactoryTest代表系统的运行模式,系统的运行模式分为三种,分别是非工厂模式、低级工厂模式和高级工厂模式,mTopAction则用来描述第一个被启动Activity组件的Action,它的值为Intent.ACTION_MAIN。因此注释1的代码意思就是mFactoryTest为FactoryTest.FACTORY_TEST_LOW_LEVEL(低级工厂模式)并且mTopAction=null时,直接返回false。注释2处的getHomeIntent

2021-12-19 11:45:23 192

原创 Android Framework学习笔记(五)应用程序启动过程,flutter和uniapp

intent.writeToParcel(data, 0);data.writeString(resolvedType);data.writeStrongBinder(resultTo);data.writeString(resultWho);data.writeInt(requestCode);data.writeInt(startFlags);if (profilerInfo != null) {data.writeInt(1);profilerInfo.writeToParcel(da

2021-12-19 11:43:45 137

原创 Android-架构新组件---让天下没有难做的-App,android开源输入法

如果我们的组件需要强绑定声明周期,那么只需要借助 Lifecycle 去监听生命周期的状态和事件即可,再也不用覆写各种回调方法了。下面将要讲到的 LiveData 和 ViewModel 都是 Lifecycle-Aware Components,它们都用到了 Lifecycle。Android 生命周期管理不当带来的最大问题就是内存泄露,举一个我们经常遇到的场景:一个异步任务(比如网络请求)持有了 UI 元素的引用,只要任务没有执行完,所有与这个 UI 元素有强引用关系的元素都没法被 GC,如果这样的场

2021-12-18 11:39:24 163

原创 Android-悬浮窗功能的实现(附Java、KT实现源码,自学Android

跳转到开启悬浮窗权限页面。如果悬浮窗权限已开启,直接将当前任务栈置于后台,开启服务即可。其实回调方法,并没有直接告诉我们是否授权成功,所以我们需要在回调中再次判断override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {if (requestCode == 0) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {if (!Settin

2021-12-18 11:37:58 761

原创 Android-开发者的下半场该如何打下去,kotlin数组

2011 年中,乔布斯生前的最后一部金典的产品 iPhone 4S 面市,把业界智能手机品质推到了一个新高度,当时的 Android 手机和 iPhone 比起来,无论是在工业设计还是运行速度、无论是稳定性还是安全性,Android 都是初生的婴儿。可惜 iPhone 太贵了,在当时看来 ,手持 iPhone 是一种身份的象征。Android 渐入佳境也就是这个时候,小米横空出世,让 Android 市场开启了千元机的时代,我们应该感谢小米、华为让我们大多数人快速上手智能手机。这一年,国内一大批 Jav

2021-12-18 11:36:16 236

原创 Android-开发之从掉洞到填坑之路,android开发规范阿里

8.使用Lint检查Layout层级可以帮你发现没用的View,兴许可以去掉。9.使用Gradle以及默认项目结构。10.把密码与敏感数据放在gradle.properties里。(译者注:或许更好的方式是把这些数据放在local.properties里,然后把这个文件加进.gitignore)11.使用styles来避免在Layout文件中写重复代码。12.不要让ViewGroup层级太多。(会过度绘制)13.监控电量,充电时可以进行更多的数据更新,低电量时停止数据的自动更新。**14.当系统

2021-12-18 11:34:41 559

原创 android-带进度条的系统通知栏消息,Activity的6大难点你会几个

主运行类:package yyy.testandroid4;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.app.AlertDialog.Builder;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingInte

2021-12-18 11:32:29 264

原创 Android-多渠道打包配置;你了解吗?,移动客户端开发语言

jnidebug {// This copies the debuggable attribute and debug signing configurations.initWith debugapplicationIdSuffix “.jnidebug”jniDebuggable true}}}构建源集名词解析: 通常源代码是放在src/main 文件夹下的,但你想可以根据不同的构建类型(比如debug、release)区分不同的源文件,这样对应建立的文件夹就是一个不同的构建源。打个比方

2021-12-18 11:30:48 180

原创 Android-WebView的使用,android编程基础班

③WebSettings:WebView相关配置的设置,比如setJavaScriptEnabled()设置是否允许JS脚本执行,部分方法如下:| 方法 | 作用 || — | — || getSettings() | 返回一个WebSettings对象,用来控制WebView的属性设置 || loadUrl(String url) | 加载指定的Url || loadData(String data,String mimeType,String encoding) | 加载指定的Data到Web

2021-12-18 11:28:57 498

原创 Android-Studio-4-1-发布啦,retrofit原理

使用新的 Database Inspector 可以在应用运行的过程中检查,查询和修改数据库,当然前提应用所在的设备API Level 需要 26或更高,然后从菜单栏中选择 View > Tool Windows > Database Inspector。要了解更多信息,请参阅使用数据库检查器调试数据库:developer.android.com/studio/insp…直接在Android Studio中运行Android模拟器现在用户可以直接在 Android Studio 运行 A

2021-12-18 11:26:41 1411

原创 Android-Sensor源码分析总结,安卓开发入门书籍推荐

{@link android.content.Context#SENSOR_SERVICE}.Always make sure to disable sensors you don’t need, especially when youractivity is paused. Failing to do so can drain the battery in just a fewhours. Note that the system will not disable sensors au.

2021-12-18 11:24:31 170

原创 Android-Q-对-startActivity()-做了限制,怎么适配?,kotlin语言优点特性

2. 桌面 Widget 点击启动 Activity。3. 当前前台任务的 Activity Back Task(回退栈)中,有你应用的 Activity。例如调起微信支付页(Activity Z)时,当前退回栈最顶端的 Activity 其实时微信的页面,但是我们应用页面(Activity Y)依然在回退栈的下面,此时依然具有打开 Activity 的权限。4. 绑定了某些系统服务,例如:AccessibilityService、AutofillService 等。

2021-12-18 11:22:24 102

原创 Android 扩大 View 的点击区域,ffmpeg音视频开发实战百度云

return super.dispatchTouchEvent(event);}@Overridepublic boolean onTouchEvent(MotionEvent event) {Log.d(TAG, "MyFrameLayout onTouchEvent " + event.getAction() );return super.onTouchEvent(event);}@Overridepublic void onClick(View view) {Log.d(TAG, “

2021-12-17 14:19:31 77

原创 Android 开发还有必要深耕吗? 未来前景将会怎样?,Android开发教程入门

高级发展阶段:再往上想发展到项目经理,还需要掌握Android 软件安全分析技术、软件开发常用测试、界面交互式系统设计,同时要补充些项目管理方面的知识,比如:软件项目风险管理常用团队协作开发工具需求分析设计设计模式。要做到公司首席技术官的位子,更多的是从架构考虑,包括:数据库系统优化、Windows Server服务器架设管理、网络安全技术与解决方案(Cisco)、海量数据库解决方案、大型服务器负载均衡优化技术等等。这是个需要绝对实力的职位。也是我的终极目标。将自己提升为“T型人才”作为身处开发类

2021-12-17 14:17:19 657

原创 Android 开发者计划近半年的跳槽,面试四家,斩获3家Offer

最近我一直在执行一次我计划了近半年的跳槽。总得而言还不错。说下我的情况。我是去年年底开始计划,六月份开始准备,投了100+家公司,拿到了20+个面试,总共面试了四家,拿到了3个offer,周期差不多是一个月时间。这个面经可能不是适合所有人,毕竟这次不是一线大厂的面经。不过内容可能你看了至少会发现自己还缺乏哪方面的知识点。适合人群:学历一般技术一般的中级开发:毕业1-3年安卓应用层开发在前面的文章中我已经谈到了如何投递简历和筛选面试和offer的,这边我就不废话了。技术储备首.

2021-12-17 14:12:47 818

原创 Android 布局优化是真的难,从入门到放弃…,2021华为Android面试真题

屏幕:由一个个像素点组成,以固定的频率(16.6ms,即1秒60帧)从缓冲区中取出数据来填充像素点。总结一句话就是:CPU 绘制后提交数据、GPU 进一步处理和缓存数据、最后屏幕从缓冲区中读取数据并显示。双缓冲机制看完上面的流程图,我们很容易想到一个问题,屏幕是以16.6ms的固定频率进行刷新的,但是我们应用层触发绘制的时机是完全随机的(比如我们随时都可以触摸屏幕触发绘制)。如果在GPU向缓冲区写入数据的同时,屏幕也在向缓冲区读取数据,会发生什么情况呢?有可能屏幕上就会出现一部分是前一帧的画.

2021-12-17 14:10:36 1035

原创 Android 实现搜索历史(2),android蓝牙开发教程

}}//wrap_contentsetMeasuredDimension(modeWidth == MeasureSpec.EXACTLY ? sizeWidth : width,modeHeight == MeasureSpec.EXACTLY ? sizeHeight : height);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {mAllChildViews.clear(

2021-12-17 14:06:45 314

原创 Android 实现搜索历史(1),渣本毕业两年经验

if (value instanceof Integer) {sp.edit().putInt(key, (Integer) value).apply();} else if (value instanceof String) {sp.edit().putString(key, (String) value).apply();} else if (value instanceof Boolean) {sp.edit().putBoolean(key, (Boolean) value).apply(

2021-12-17 14:05:20 544

原创 Android 代码混淆 混淆方案,准备Android面试

release {buildConfigField “boolean”, “LOG_DEBUG”, “false” //不显示logminifyEnabled trueshrinkResources trueproguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’signingConfig signingConfigs.config}}}因为开启混淆会使编译时间变长,所以debug模

2021-12-16 12:10:07 183

原创 Android 二维码框4个角&上下滚动条&闪光灯,讲的真详细

private static final int TEXT_SIZE = 16;/**字体距离扫描框下面的距离*/p《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享rivate static final int TEXT_PADDING_TOP = 30;boolean isFirst;/**中间滑动线的最顶端位置*/private int slid

2021-12-16 12:08:30 448

原创 android 三级级联筛选列表,阿里、百度等大厂技术面试题汇总

mFirstAdapter = new TargetCategoryFirstAdapter(this, firstBeans);mFirstAdapter.setSelectedBackgroundResource(R.drawable.select_white);//选中时mFirstAdapter.setHasDivider(false);mFirstAdapter.setNormalBackgroundResource(R.color.target_bg_gray);//未选中mFirstL

2021-12-16 12:04:06 172

原创 Android Volley:使用方法总结及实例解析,玩转MySQL

if (mImageLoader == null) {mImageLoader = new ImageLoader(mRequestQueue, new LruBitmapCache());}return mImageLoader;}public void addToRequestQueue(Request request,String tag) {request.setTag(TextUtils.isEmpty(tag) ? TAG : tag);getRequestQueue().add

2021-12-16 12:01:46 131

空空如也

空空如也

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

TA关注的人

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