![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 75
James-Tom
微信公众号:一粒尘埃的漫旅。
里面有很多想对大家说的话,就像和朋友聊聊天。
写代码,做设计,聊生活,聊工作,聊职场。
我见到的世界是什么样子的?
一个普通人的世界。
搜索关注我吧。
##一粒尘埃的漫旅 ## @一粒尘埃的漫旅
展开
-
Android插件化技术之加载未安装APK
Android插件化是一种解决方案,当一个应用发展成一个平台级应用时,就更需要针对各个子业务模块按需动态加载,要做到按需动态加载一种是可以通过H5的方案,另一种就是针对各个子业务模块单独开发成一个APK,这时候这个平台级应用我们称为宿主,子业务模块APK称为插件,宿主通过反射点击去学习、代理点击去学习等实现hook技术来完成插件APK的免安装加载。所以必须要先了解这个HOOK技术。HOOK翻译成钩子,钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。在Android系统中,通俗来讲,就是去阅读原创 2024-08-28 21:41:05 · 1025 阅读 · 0 评论 -
桌面小部件(Appwidget)的列表ListView点击启动Activity失败的解决方案
Android桌面小部件,点击listView列表项,无法打开Activity的问题解决办法。原创 2024-01-08 16:15:33 · 578 阅读 · 0 评论 -
Android经典蓝牙与低功耗蓝牙开发相关知识
Android蓝牙开发目前涉及到4.0以下及以上的蓝牙协议,随着低功耗蓝牙(BLE)越来越应用普遍,最新的设备厂商已使用蓝牙协议5.2版本,而经典蓝牙和低功耗蓝牙开发方式完全不同,所以需要针对性的做开发,同时也会涉及到一些小坑,需要特别注意。原创 2023-09-08 16:25:10 · 1722 阅读 · 0 评论 -
Android字节码ASM插桩
目录1、字节码ASM插桩到底什么意思?1.1、字节码1.2、ASM1.3、插桩2、插桩到底有什么用?3、怎么才能实现插桩呢?第一步:新建moudle第二步,配置属性文件和插件模块的build.gradle:第三步,编写对应的插件注入类,及类和方法访问器:第四步,上传插件库到本地maven仓库,方便主项目引用:第五步,配置主项目的MyAmsTest/app/build_gradle及MyAmsTest/build_gradle文件第六步,在主项目中编写被用于插桩的测试类:第七步,在启动Activity中正常使原创 2022-03-08 12:12:20 · 4016 阅读 · 0 评论 -
Android中正确使用Rsa加密算法
在Android中使用和在java程序中使用Rsa有些许区别,如,没有BASE64Decoder这个类等等...原创 2021-11-02 16:00:38 · 808 阅读 · 0 评论 -
RecyclerView实现空视图切换
实际的业务需求中:无列表数据的时候,我们希望显示一个空视图布局,以方便用户直观理解;而当有数据时,则正常加载列表数据。这样就形成了一个有数据和无数据的布局切换。基于此,本文提供了一种解决方案。原创 2021-04-20 09:35:53 · 678 阅读 · 0 评论 -
Retrofit @Multipart@PartMap@Part组合的一种用法
目录1、应用场景2、实现2.1、api的声明写法2.2、实际调用3、总结1、应用场景有这样一个需求:要实现附件与字符串参数同时提交请求。附件可能是多个,字符串参数也可能是多个。2、实现2.1、api的声明写法只实现多文件上传,处理方式如下: @Multipart @POST("api/uploadFile") fun uploadFiles( @Part parts: List<MultipartBody.Part> ): Call<R原创 2020-10-26 18:25:58 · 5611 阅读 · 0 评论 -
TransitionAnimation过渡动画简单实现
TransitionAnimation过渡动画实现,让交互更友好一点TransitionAnimation过渡动画实现,让交互更友好一点跳转界面布局文件源布局如下:目标布局如下:TransitionAnimation过渡动画实现,让交互更友好一点当一个列表中带有图标,跳转到另一个界面时候还是有对应的这个图标的放大或者缩小的时候,可以考虑添加过渡动画,比较简单,几行代码即可,注意兼容性未大面积测...原创 2019-07-04 14:01:46 · 392 阅读 · 0 评论 -
BottomNavigationView 实现底部凸起菜单解决方案
先上效果图:布局:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" andro...原创 2018-11-20 16:56:14 · 7062 阅读 · 4 评论 -
环信自定义扩展菜单提示下标越界的问题记录
集成EasyUI的时候发现,一直提示数据越界,发送完一条自定义消息后,在点击菜单发送就崩了。最后找到解决方案:自定义属性的时候一定要挨着前面的顺序递增添加属性值,不然会报数组越界,这个地方坑了好久。...原创 2018-11-07 15:11:03 · 225 阅读 · 0 评论 -
Mvp契约类实践
MVP中关于契约的用法契约类的好处:低耦合、接口统一管理、业务逻辑清晰、易于后期维护。以最简单的登录为例:loginContract契约类/** * 契约类 */public interface LoginContract { interface View extends BaseView&amp;amp;lt;Presenter&amp;amp;gt; { void sh...原创 2018-08-27 10:11:32 · 1733 阅读 · 0 评论 -
腾讯云IM添加位置发送功能
腾讯云IM自定义位置发送集成腾讯云IM时,Demo里面发现没有位置这个功能,看了官方文档支持发送位置信息及自定义消息,于是简单的实现了发送位置消息的大概思路。基于官方3.XDemo基础上进行的修改1、自定义位置消息对象 2、ChatInput中添加样式及添加点击事件调用ChatView发送位置方法 3、ChatView添加发送位置接口方法 4、ChatActivity继承ChatVi...原创 2018-07-31 23:52:23 · 3403 阅读 · 1 评论 -
Android高德地图加载WMS服务应用实践
需求:在Android高德地图上需要加载wms服务,用于显示自己绘制的瓦片地图。由于需要在指定的位置添加一小块瓦片地图,所以在制作瓦片地图时需要参照高德地图底图作为参照进行图形绘制,但是因为网上没有找到具体可以参考的高德地图底图,本文采用天地图作为参照地图进行绘制,绘制后再通过经纬度坐标转换为高德地图对应的经纬度(网上有对应的转换代码)。原创 2017-12-14 13:48:57 · 7252 阅读 · 24 评论 -
Android夜间模式实现(系统自带)
android系统自带夜间模式切换主要是通过调用此方法来实现模式切换:AppCompatDelegate.setDefaultNightMode(int mode)方法来设置系统默认白天与夜间模式。调用此方法后不会立即生效,还需要调用recreate()方法后才会生效,重启活动后导致页面数据丢失,所以在进行切换时主要保护现场数据,以便恢复。原创 2017-12-06 09:59:47 · 6571 阅读 · 3 评论 -
Android TabLayout+ViewPager+Fragment简单实现
很多时候我们都有遇到左右切换tab页面的场景,本文主要用到android.support.design.widget.TabLayout、android.support.v4.view.ViewPager、android.support.v4.app.Fragment都是系统自带的兼容性控件没有多少技术难点。原创 2017-12-28 15:08:20 · 5950 阅读 · 6 评论 -
Android 事件分发机制的理解
对于ACITION_DOWN事件的理解如下: 总结:对于在onTouchEvent消费事件的情况:在哪个View的onTouchEvent 返回true,那么ACTION_MOVE和ACTION_UP的事件从上往下传到这个View后就不再往下传递了,而直接传给自己的onTouchEvent 并结束本次事件传递过程。对于ACTION_MOVE、ACTION_UP总结:ACTION_DO原创 2018-01-19 15:48:14 · 202 阅读 · 0 评论 -
Android系统自带更新DownloadManager用法
下载管理器是一个处理长时间运行的HTTP下载的系统服务,通过此API请求下载的应用程序应为ACTION_NOTIFICATION_CLICKED注册一个广播接收器,以便在用户单击通知中的正在运行的下载或从下载UI中正确处理。此类的实例必须使用Context.getSystemService(Class),参数为DownloadManager.class或Context.getSystemService(String),参数为Context.DOWNLOAD_SERVICE。原创 2017-12-07 17:10:24 · 10014 阅读 · 2 评论 -
一张图对于MVP架构的理解
对于Mvp架构的一点理解,如下图所示:项目包结构示例: 关键类: ILoginModel 接口类public interface ILoginModel { void doLogin(HashMap params, IBaseListener iBaseListener);}LoginModel实现类public class LoginModel impl原创 2018-01-16 14:39:30 · 339 阅读 · 0 评论 -
SlidingUpPanelLayout滑动面板布局简单使用
SlidingUpPanelLayout滑动面板布局简单使用SlidingUpPanelLayout是github上的一个开源库https://github.com/umano/AndroidSlidingUpPanel,主要实现的效果是就是上滑或者点击展开面板带动画: 第一步,添加依赖包implementation 'com.sothree.slidinguppanel原创 2018-01-16 11:10:38 · 3432 阅读 · 1 评论 -
Android widget小部件使用注意事项
android小部件的来实现复杂的列表(ListView,GridView)布局,已加载网络数据,添加item点击事件,及点击后跳转到新的Activity整个过程总结。 剩下2个关键的问题尚未很好的解决: a、异步加载列表数据无法实时更新到 b、列表数据滚动时导致图片错乱的问题 为每一个List 的Item添加点击事件需要使用setOnClickFillInIntent方法设置填充事原创 2018-01-05 15:05:46 · 1127 阅读 · 0 评论 -
获取焦点弹出下拉框AppCompatAutoCompleteTextView
AppCompatAutoCompleteTextView简单的学习使用总结本文主要实现当获取到焦点的时候弹出下拉列表信息,适合场景为常用事项选择清单,主要原理就是根据焦点监听事件判断,当获取到焦点调用showDropDown方法弹出下拉列表:AppCompatAutoCompleteTextViewshowDropDown()主要代码清单如下:import andr...原创 2018-03-23 10:36:56 · 1949 阅读 · 0 评论 -
Activity嵌套多个Fragment实现不同全屏模式状态栏
Activity嵌套多个Fragment实现不同全屏模式状态栏原创 2017-12-01 17:00:03 · 3515 阅读 · 1 评论