Android
lipeiyong
这个作者很懒,什么都没留下…
展开
-
Android DiffUtil 导致索引越界异常
节能刷新移动设备屏幕大小有限(不得不说我是顽固的小屏爱好者,大于5.5寸难以接受,时代已经抛弃我了哈哈),列表(List)可以说是一个出现非常高频的交互设计。大多数情况下我们的列表不仅仅是一次性加载本地数据,而要应付来自网络的各种动态内容,可能是增加、删除等操作。在Android开发中,一个耳熟能详的方法就是 notifyDataSetChanged ,在适配器(Adapter)的设计模式下,每当我们的列表数据发生变更时,就需要调用此方法来更新UI。然而,这个方法并不“节能”,它会同时刷新列表中的所有i转载 2021-06-23 16:01:13 · 880 阅读 · 0 评论 -
Android 实现TextView第一行嵌入图片
效果代码<?xml version="1.0" encoding="utf-8"?><layout> <data> </data> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.an原创 2021-04-08 14:13:42 · 1023 阅读 · 1 评论 -
动态修改 Retrofit 的url
这里采用的是反射的方式步骤一:通过反射直接修改baseUrl步骤二:情况缓存的数据(Retrofit会把之前调用过的接口的一些信息通过一个Map对象缓存起来) @Singleton @Provides fun provideApiService(retrofit: Retrofit): ApiService { return retrofit.create(ApiService::class.java) } @Singleton @Pro原创 2021-04-06 16:53:44 · 1251 阅读 · 0 评论 -
List遍历for、foreach和iterator选择
结果ArrayList:for>iterator>foreachLinkedList:iterator>foreach>for原因1.foreach是用iterator来实现的,所以不展开说明。2.接下来分析一下ArrayList和LinkedList的数据结构上的区别。ArrayList是基于(index)的数组,在内存上是连续存储,所以获取指定数据的比较快,时间复杂度是O(1)。LinkedList是以链表形式存储的,每个元素都会存放下一个元素的节点坐标,所以用fo原创 2020-11-11 13:59:10 · 311 阅读 · 0 评论 -
Android 组件化
大类:1、各个模块的版本号统一管理,避免不同模块版本号冲突2、各模块加资源前缀限制3、公共类放入libcommon4、模块之间通信采用alibaba的ARouter主要使用技术:1、AndroidX2、Databinding3、LiveData+ViewModel4、Room5、Dagger26、Glide7、Okhttp+Retrofit28、ZXing9、Gson\FastJson编码规范:采用Alibaba Java Coding Guidelines plugin s原创 2020-10-16 14:50:41 · 88 阅读 · 0 评论 -
Android 自定义ProgressBar
package com.furlingtech.printer.utils;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import andr原创 2020-09-16 10:10:55 · 358 阅读 · 0 评论 -
Android 自定义View的属性使用Databing
在自定义View中,属性使用databing。1.自定义属性 <declare-styleable name="CustomProgressBar"> <attr name="android:progress"/> </declare-styleable>2.自定义控件中给该属性设置setpublic void setProgress(int progress) { mProgress = progress; postInv原创 2020-09-16 10:07:14 · 1177 阅读 · 0 评论 -
git-移除某个文件夹的版本控制
git rm -r -n --cached “app/build” //-n 表示预览需要删除版本控制的文件列表git rm -r --cached “app/build” //执行删除命令git commit -m “remove app/build” //提交git push origin master //提交到远程服务器主分支...原创 2020-07-24 09:07:11 · 1200 阅读 · 0 评论 -
AndroidStudio子线程无法debug调试
今天接手的一个老项目需要修改tcp接收的协议,之前是一次都没有跑过。跑起来后其他一切都正常,但调试tcp需要断点进入子线程,奇怪的就是无法进入。习惯性的百度、google,给出的解决方法几乎一直,如下设置好后记得需要重新编译一下,否则不生效。上面的方法对我却不生效,折腾了半天发现minifyEnabled设置为了true,修改为false就好了...原创 2020-07-15 14:37:01 · 2383 阅读 · 0 评论 -
Android内部和外部存储解析
Android的开发离不开数据的存储,然后在之前的开发中一直没有搞清楚,是应该要好好梳理梳理了。以下引用来自对官方文档的理解安卓手机的存储分为 2 部分,内部存储 ( Internal ) 和外部存储( External )内部存储指的是系统存储空间,需要root权限才能访问,像SharedPreferenced和...原创 2019-09-26 19:33:41 · 462 阅读 · 0 评论 -
打成系统包时遇到的异常
1、新的apk提示升级失败原因:新apk中缺少android:sharedUserId=“android.uid.system”2.提示数据库已变更,但版本号未改变异常原因:当数据库变更的时候需要增加版本号,并配置如下代码 public static final Migration MIGRATION_1_2 = new Migration(1, 2) { @Over...原创 2019-06-26 15:10:43 · 383 阅读 · 0 评论 -
SDK中跨进程通信的4种方式
1、SDK中跨进程通信的4种方式1)Intent:通过隐式调用实现跨进程通信Intent intent = new Intent();intent.setAction(Intent.ACTION_CALL);startactvity(intent);原创 2019-05-08 13:21:01 · 1076 阅读 · 0 评论 -
Android中allowBackup的作用
在谷歌 2010 年发布 Android 2.2 Froyo (冻酸奶)系统中,谷歌引入一个了系统备份的功能,允许用户备份系统应用和第三方应用的apk安装包和应用数据,以便在刷机或者数据丢失后恢复应用。 第三方应用开发者需要在应用的 AndroidManifest.xml 文件中配置 allowBackup 标志(默认为 true)来设置应用数据是否能能够被备份或恢复。当这个标志被设置为true时应用程序数据可以在手机未获取 ROOT 的情况下通过adb调试工具来备份和恢复,这就允许恶意攻击者在接触用原创 2019-03-20 14:24:00 · 1284 阅读 · 0 评论 -
FragmentTabHost+ViewPager可滑动菜单栏
前言Android开发中使用底部菜单栏的频次非常高,主要的实现手段有以下:TabWidget隐藏TabWidget,使用RadioGroup和RadioButtonFragmentTabHost5.0以后的TabLayout最近推出的 Bottom navigation在这我选择的是FragmentTabHost+ViewPager总体设计思路FragmentTabHost...原创 2019-03-19 12:23:55 · 318 阅读 · 0 评论 -
LivaData所遇到的一些问题
LiveData<ApiResult<ModelPicture>> apiRequest = apiService.getModelPicture();MediatorLiveData<Bitmap> livedata = new MediatorLiveData<>()livedata.addSource(apiRequest,modelPic...原创 2019-07-23 16:19:38 · 295 阅读 · 0 评论 -
OkHttp拦截器的一些骚操作
1.URL重定向2.请求体数据加密3.HEAD动态添加4.请求日志抓取URL重定向如何重定向,说白了就是更换个新的网址,但是一般服务端做比较好,客户端就显得有些鸡肋。但是这个东西日常也会有用到,比如一些场景,测试生成环境的切换。业务多了,几个人混合开发的后台,每个人的代码不同意导致了baseURL时还不同,这时候可以通过一个入口来修改就行,不然每个地方都去修改,接口量大的话会很麻烦。自...转载 2019-08-16 17:06:01 · 692 阅读 · 0 评论 -
接口多格式数据解析
前因:由于项目功能的增加,所需要接人的后台接口也不只一个,返回格式的差异化也不可避免。思路:接口返回时我们所必须的值分别是Http status code、HTTP status message or null if unknown、和body。当我们在接收数据时先把数据转换为JsonObject,然后在CallAdapterFactory中转换为指定格式new Retrofit.Builde...原创 2019-09-25 14:36:05 · 332 阅读 · 0 评论 -
Android手机隐藏底部导航栏
先要条件:已具有root权限所需工具类public class ShellCommand { private final static String COMMAND_SU = "su"; private final static String COMMAND_SH = "sh"; private final static String COMMAND_EXIT = "...原创 2019-09-25 14:48:09 · 3669 阅读 · 1 评论 -
自定义控件:Preview无法预览
做一下记录当自定义的View继承已有布局时,可以通过clear,然后在Preview中点击build就可以显示public class CustomProgressbar extends RelativeLayout {}但是自定义View继承View时还是无法显示,待解决...原创 2019-07-04 10:00:49 · 1171 阅读 · 0 评论