- 博客(15)
- 收藏
- 关注
原创 Android开发:不需要权限的悬浮窗方案!学来直接用进项目
因为我们需要在多个页面展示悬浮窗,可以通过ActivityLifecycleCallbacks监听所有Activity的生命周期,onStart时添加,onStop时移除。因为要添加到ContentParent中,持有了Activity的引用,所以要注意处理内存泄漏的问题,在项目中我们使用了弱引用来防止内存泄漏。我们在Activity onStart时,将要悬浮的View添加到ContentParent上就可以实现不需要权限的悬浮窗了。不需要申请权限,可以直接打开悬浮窗,使用便捷。
2024-05-24 03:17:56
741
原创 Android工程化实践:组件化发布
Gradle 插件」和「Gradle」这两个概念是比较容易混淆的。Gradle 是构建工具,相当于一个构建环境;而 Gradle 插件本质上就是具体的构建任务,我们将一个构建任务模块化抽离出来,提供给其他项目复用,就是一个 Gradle 插件。例如:com.android.application:Android 应用插件com.android.library:Android 模块插件kotlin-android:Android Kotlin 插件。
2024-05-24 03:01:28
559
原创 Android屏幕刷新机制—VSync、Choreographer-全面理解!
上面讲到,Google在Android 4.1系统中对Android Display系统进行了优化:在收到VSync pulse后,将马上开始下一帧的渲染。即一旦收到VSync通知,CPU和GPU就立刻开始计算然后把数据写入buffer。本节就来讲 “drawing with VSync” 的实现——。Choreographer,意为 舞蹈编导、编舞者。在这里就是指 对CPU/GPU绘制的指导—— 收到VSync信号 才开始绘制,保证绘制拥有完整的16.6ms,避免绘制的随机性。
2024-05-24 03:00:30
850
原创 Android中为什么需要Handler?震撼来袭免费下载!
Android相关的书籍包括《Android权威编程指南》、《Android开发艺术探索》等,进一步的还可以去阅读Android相关源码,配合《Android源码设计模式解析与实战》等书籍,对阅读源码大有裨益。我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。毕业几年,表面上用过很多技术,但都没能深入学习,一年的工作经验,干了好几年。
2024-05-24 02:43:57
372
原创 Android中AsyncTask类与AsyncQueryHandler类的用法
startInsert,startDelete,startUpdate,startQuery这四个操作,并提供相对应的onInsertComplete,onDeleteComplete,onUpdateComplete,onQuerytComplete四个方法,以供操作完数据库后进行其它的操作,这四个 onXXXComplete方法都是空实现,以便我们只需要去实现我们关注的操作。// 可变长的输入参数,与AsyncTask.exucute()对应。// 任务启动,可以在这里显示一个对话框,这里简单处理。
2024-05-24 02:42:58
313
原创 Android 闪退问题
好像找到规律了,是不是插拔USB的时候系统把activity干掉了,带着这个问题去找度娘看看,果不其所以然,找到一篇。,这位大哥好像也是遇到和我一样的问题,最终参考这位大哥的方法搞定了!
2024-05-24 02:22:16
443
原创 Android 通知监听服务、NotificationListenerService使用方式(详细步骤+源码)
这个类继承了NotificationListenerService,里面里面几个方法,都已经注释过了,这里设置通知栏上应用的包名,由于国产厂商对于Android做了定制化,因此各个厂商的系统App软件的包名就不会是一致的,例如我用的是荣耀,那么我监听到的通知短信是com.hihonor.mms,来电是com.android.incallui。与之前的方法中的参数不同,当然图方便也可以只用这个新增的,把之前的可以去掉,因为现在的这个拿到的信息要比之前多,只不过需要再对消息做进一步的处理。
2024-05-24 02:21:18
669
原创 Android 三类框架的理解以及MVVM框架的使用
MVP的View层Activity在实际项目中,随着逻辑的复杂度越来越大,Activity臃肿的缺点仍然体现出来了,因为Activity中还是充满了大量与View层无关的代码,比如各种事件的处理派发,就如MVC中的那样View层和Controller代码耦合在一起无法自拔。,Activity在MVP中是View层,在MVC中是Controller层,这是MVC和MVP很主要的一个区别,可以说Android从MVC转向MVP开发也主要是优化Activity的代码,避免Activity的代码臃肿庞大。
2024-05-24 02:05:12
568
原创 Android XML 布局基础(五)线性布局 - LinearLayout
通过给子视图设置权重值,来分配子视图所占空间的权重(比例),如图三个子视图权重分别设置为。由于最外层不是 Layout,则这里为根布局。由于最外层不是 Layout,则这里为根布局。测试代码同上,修改一下方向代码即可。测试代码同上,修改一下方向代码即可。
2024-05-24 02:04:13
474
原创 Android QQ登录集成
/***/IUiListener loginListener = new BaseUiListener() {@Overrideprotected void doComplete(JSONObject values) {try {Log.i(“lgq”,“sssssss===”+values);String strAccessToken = values.getString(“access_token”);String strExpiresIn = values.getString(“expires_in”
2024-05-24 01:47:07
517
原创 Android PackageInstaller:安装应用的应用
以上代码的效果就是,只安装包名以“com.zms”开头的应用。其他的不会出现安装界面,直接finish()。
2024-05-24 01:46:09
446
原创 Android - 开发常用工具类Utils
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日HH时mm分”);@param context Context 对象。@param context Context 对象。@param context Context 对象。@param context Context 对象。将px值转换为 dip或dp值,保证尺寸大小不变。将dip或dp值转换为px值,保证尺寸大小不变。将px值转换为sp值,保证文字大小不变。
2024-05-24 01:28:24
315
原创 Android 实现形态各异的双向侧滑菜单 自定义控件来袭
因为,左侧菜单滑动出来以后,被内容区域遮盖住了,这个也很容易理解,毕竟我们的布局,内容在左侧菜单后面,肯定会挡住它的。我们直接通过 l 和 菜单宽度进行比较, 如果大于菜单宽度,那么肯定是想操作右侧菜单,否则那么就是想操作左侧菜单;宽度设置完成以后,肯定就是定位了,把左边的菜单弄到左边去,右边的菜单放置到右边,中间依然是我们的内容区域,那么请看onLayout方法~哈,出奇的简单,因为我们的内部是个横向的线性布局,所以直接把左侧滑出去即可~~定位也完成了,那么此时应该到了我们的处理触摸了。
2024-05-24 01:27:24
500
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅