- 博客(47)
- 资源 (28)
- 收藏
- 关注

原创 【android学习】android常用adb命令(持续更新)
android使用adb命令查看设备尺寸和密度adb shellwm size 屏幕大小1920x720wm density 屏幕密度 160wm density 240 修改屏幕密度为 240查看keystore的签名keytool -list -keystore D:\app_key.jks查看apk签名keytool ...
2019-12-04 17:03:26
204
原创 【android学习】使用linkToDeath对AIDL双向死亡监听
概述在使用service中进行AIDL交互时候,如果服务端或者客户端意外停止,会抛出异常android.os.DeadObjectException , 这时候我们就需要双向监听服务端和客户端的异常停止,并重新绑定服务linkToDeath的使用 linkToDeath 为Binder对象添加死亡代理。 unlinkToDeath 取消死亡代理客户端 首先我们需要创建一个DeathRecipient对象 private IBinder.DeathRec...
2021-01-18 16:57:59
7347
5
原创 【android学习】使用windowIsTranslucent导致的问题
为啥使用windowIsTranslucent一般我们使用在冷启动时候,视觉上加快了冷启动速度,一般设置如下: <item name="android:windowBackground">#ff0000</item> //背景颜色 <item name="android:windowIsTranslucent">true</item>//是否半透明<!-- <item name="andro.
2021-01-18 15:08:31
3524
原创 【android学习】监听左右滑动的LinearLayout
public class BCustomerLinearLayout extends LinearLayout implements View.OnTouchListener { private static final String TAG = "CustomerLinearLayout"; public OnGestureChangeListener listener; public interface OnGestureChangeListener { .
2021-01-15 15:17:09
1039
原创 【android异常】Glide 在 android 9.0 系统 http图片加载不出来
在android 9.0上面使用glide加载http的图片时候报错java.io.IOException(Cleartext HTTP traffic to img.kaolafm.net not permitted)如下图这是因为在android 9.0以后,不在允许使用http请求修改方法如下:在AndroidManifest.xml的application里面,添加android:usesCleartextTraffic="true"以及添加android:ne.
2020-06-10 14:02:09
2416
原创 【android学习】记录应用内存优化
图片优化(效果最明显) 过度图片的回收 原因分析:在做冷启动时候,很多人写一个如下 <style name="MainTheme" parent="@android:style/Theme.Wallpaper.NoTitleBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowTransluc...
2020-05-22 11:36:40
437
原创 【android学习】查看应用应用内存
查看内存方法在adbshell条件下面使用如下指令查看内存dumpsys meminfo com.incall.autofly.launcher | grep TOTAL:获得的占用内存大小如下:TOTAL: 128582
2020-05-20 10:42:42
1243
原创 【android学习】ViewPager中包含TextView,在TextView上拖动不能滑动ViewPager
问题描述: 利用ViewPager+Fragment左右滑动很灵敏,但是只要手指放在fragment布局中的TextView上面拖动时候,ViewPager就不能拖动,经过后续对比发现,问题点就在TextView中的singleLine和gravity上面。在做跑马灯效果时候,给TextView设置了 android:singleLine="true",以及 android:gravity="center"修改方案:android:singleLine="true"继续保...
2020-05-15 09:19:31
619
原创 【android学习】自定义View空间,只能监听到ACTION_DOWN,不能监听到ACTION_MOVE
我们在处理自定义View时候,会重写dispatchTouchEvent方法,但是在有些时候,只能获得ACTION_DOWN,不能获得ACTION_MOVE @Override public boolean dispatchTouchEvent(MotionEvent ev) { Log.e(TAG, "dispatchTouchEvent: " + ev.to...
2020-05-08 12:00:32
680
原创 【android学习】多用户发送广播
简介在开发中,遇到Calling a method in the system process without a qualified user这样的错误原因:在Android 4.2以后,增加了多用户,需要使用如下发送广播context.sendBroadcastAsUser(intent,UserHandle.ALL);添加权限<uses-permission a...
2020-01-16 16:04:46
3534
原创 android架构师之路——APT和 Javapoet 实现Butterknife
介绍APT(Annotation Processing Tool)即注解处理器,是一种处理注解的工具,确切的说它是javac的一个工具,它用来在编译时扫描和处理注解。注解处理器以Java代码(或者编译过的字节码)作为输入,生成.java文件作为输出。使用APT的优点就是方便、简单,可以少些很多重复的代码。用过ButterKnife、Dagger、EventBus等注解框架的同学就能感受...
2019-12-10 18:26:18
425
原创 android架构师之路——自定义注解
定义注解定义注解用的关键字是:@interface元注解元注解:元注解共有四种@Retention, @Target, @Inherited, @Documented@Retention注解位置@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含 @Retention(RetentionPolicy...
2019-12-09 17:04:54
171
原创 【android学习】沉浸式状态栏解决方案
stytle方式用stytle方式设置,需要兼容4.4一下,4.4到5.0,以及5.0以上版本/values/stytle.xml <!-- 状态栏透明设置 必须是4.4以上的版本--> <item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true&...
2019-11-26 16:04:32
376
原创 【android学习】Android系统根目录结构及说明
/system目录/system/app/ 存放系统应用,包括google预先绑定得app,厂商或运营商得app(这些app应该放在/vendor/app目录)/system/bin主要是Linux系统自带的二进制可执行文件/system/build.prop记录了系统的设置和改变/system/etc存放安卓系统配置文件/system/fonts 存放各种字体/s...
2019-11-19 17:16:28
2402
原创 【android UI学习】简单炫酷Splash界面
先看运行效果第一个动画:绘制六个点旋转动画绘制六个小圆mCircleColors这里一共是6中颜色,分别对应6个小圆颜色 每个圆得角度=2π/小圆的个数 每个圆得x坐标 = 圆半径*cos(a) +圆心X坐标 每个圆得y坐标 = 圆半径*sin(a) +圆心Y坐标 每个小圆i*间隔角度 + 旋转的角度 = 当前小圆的真是角度六个点得绘制代码 /** ...
2019-11-14 18:01:20
962
原创 【android UI学习】QQ未读消息粘性动画
方法简介先看一下效果,这里是模仿qq未读消息,清空消息动画效果,主要也是前面讲解了贝塞尔曲线的运用实战下面我们来计算一下其中各个点的坐标位置AB,CD这两条线是通过贝塞尔曲线绘制得出的,绘制AB线,我们需要得到A,B,Anchor三个点的坐标 绘制CD线,我们需要得到C,D,Anchor三个点的坐标得到AB,CD两条线以后,我们就可以通过path方式,画出...
2019-11-01 17:49:40
310
原创 【android UI学习】贝塞尔曲线
简介Bézier curve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线。 曲线定义:起始点、终止点、控制点。通过调整控制点,贝塞尔曲线的形状会发生变化一阶贝赛尔:一阶一阶贝塞尔曲线是一条直线,计算公式为:一阶计算公式二阶贝赛尔:1.步骤一:在平面内选3个不同线的点并且依次用线段连接。如下所示..2.步骤二:在AB和BC线段上找出点D和点E,...
2019-10-31 11:53:16
378
原创 【android UI学习】SweepGradient实现雷达扫描
Shader着色器的讲解,可以参考【android UI学习】Shader着色器我们使用SweepGradient实现雷达扫描效果完整代码如下:public class MyRadarGradientView extends View { private Paint mPaintCircle; // 画圆用到的paint private Paint mPain...
2019-10-25 16:00:49
378
原创 【android UI学习】LinearGradient实现歌词滚动
Shader着色器的讲解,可以参考【android UI学习】Shader着色器这里LinearGradient的实际运用先看运行效果具体思路就是,用LinearGradient设置一个三个字体长度的白色渲染进度条 通过setTranslate(offset, 0),设置渲染条的滚动 postInvalidateDelayed(30),每隔30毫秒刷新界面完整...
2019-10-25 14:20:19
262
原创 【android UI学习】Shader着色器
简介Shader着色器分为BitmapShader(位图渲染);LinearGradient(线性渲染);SweepGradient(梯度渲染);RadialGradient(环形渲染);ComposeShader(组合渲染);BitmapShader 图片渲染BitmapShader 需要传入三个参数:Bitmap:构造shader使用的bitmap tileX:X轴方向的Ti...
2019-10-24 18:14:07
367
原创 【android学习】Jetpack:Room数据库
简介google公司推出的一款类似GreenDao、OrmLite的数据库框架添加依赖dependencies { implementation 'android.arch.persistence.room:runtime:2.2.0' annotationProcessor 'android.arch.persistence.room:compiler:2.2.0'...
2019-10-15 14:37:35
229
原创 【android学习】Jetpack:LiveData共享数据
简介前面讲解了LiveData的简单使用Jetpack:LiveData的简单使用,这里主要讲解livedata的数据共享我们这里使用LiveData进行两个fragment之间通信,达到如下效果先看ViewModel类public class NameViewModel extends ViewModel { //liveData通常和viewModel一起使用...
2019-10-13 15:49:02
909
原创 【android学习】Jetpack:LiveData的简单使用
简介LiveData提供可观察的数据持有者类; LiveData与Fragment、Activity、Service一起持有相同生命周期,LiveData仅更新处于活动生命周期状态的应用程序组件观察者; 提供数据共享。具体优点可以参考官方文档,我们这里简单使用创建LiveDataViewModel类这里我们在MutableLiveData中存放了一个User类,这样就将User类...
2019-10-12 16:57:38
264
原创 【android学习】Jetpack:Lifecycle的简单使用
简介通过观察者模式的思路去对外响应生命周期变化,简单使用在数据埋点中引包 implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'编写自己的MyLifeObserver 需要继承LifecycleObserver ,这里我只监听了activity的onCreate 和 onStart方法publ...
2019-10-11 17:08:23
204
原创 【android学习】Jetpack:DataBinding在recycleview中的使用
简介这文章是结合前面一篇文章写的后续使用,给定的demo包含了上一篇文章的代码,如果有不了解的,可以移步Jetpack:DataBinding数据绑定直接上代码public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { public Context cont...
2019-10-11 16:44:56
631
原创 【android学习】Jetpack:DataBinding数据绑定
简介2018年谷歌I/O 发布了一系列辅助android开发者的实用工具,合称Jetpack,以帮助开发者构建出色的 Android 应用。我们这里主要学习Architecture Components(架构组件),这个组件分为8大模块:Data Binding,Lifecycles,LiveData,Navigation,Paging,Room,ViewModel,WorkManager...
2019-10-10 17:37:25
471
原创 【android学习】MVP学习
mvp与mvc得区别上面这张图是网上找的,可以明显得区别MVP和MVC我们先看一下MVC模型层(model):相当于我们得网络请求 视图层(view):相当于我们得布局文件 控制层(controller):相当于我们得activity相当于我们得activity即要和我们得布局文件打交道,又要和我们得数据层打交道,使得我们得activity就会有相当多得代码,可读性降低,而M...
2019-09-21 18:31:33
137
原创 android架构师之路——IOC原理,简单实现BufferKnife
简介Inversion of Control,英文缩写为IOC,字面翻译:控制反转。什么意思呢?就是一个类里面需要用到很多个成员变量,传统的写法,你要用这些成员变量,那么你就new 出来用呗!IOC的原则是:NO,我们不要new,这样耦合度太高,你配置个xml文件,里面标明哪个类,里面用了哪些成员变量,等待加载这个类的时候,我帮你注入(new)进去。具体可以参考https://www.j...
2019-09-16 19:07:05
286
原创 【android学习】android动态代理
简介为其他对象提供一种代理以控制对这个对象的访问。某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以再两者之间起到中介作用。运行阶段才指定代理哪个对象 静态代理 Subject 类public interface Subject { public void sayGoodBye(); public void sayHello(String ...
2019-09-16 17:32:44
384
转载 【android学习】好的android学习博客
史上最全设计模式导学目录(完整版)https://blog.youkuaiyun.com/lovelion/article/details/175172132018美团点评技术年货合辑分享【前端系列】:http://dpurl.cn/DWVhPpS【后台系列】:http://dpurl.cn/obtIVn【系统系列】:http://dpurl.cn/zTDWq8Q【算法系列】:http...
2019-08-30 09:55:51
222
原创 【android学习】okhttp备注
简介这里是基于com.squareup.okhttp3:okhttp:3.14.1OKhttp.builder注释 public static final class Builder { Dispatcher dispatcher; //调度器 /** * 代理类,默认有三种代理模式DIRECT(直连),HTTP(http代理)...
2019-08-29 09:26:49
132
原创 android架构师之路——RXJava实现方式解析
简介一个可观测的序列来组成异步的、基于事件的程序的库。(简单来说:它就是一个实现异步操作的库)GitHub地址:https://github.com/ReactiveX/Rxjava本文得目的简单解析RXJava原理,RXJava的被观察者,观察者,发射器简单实现,最终完成以下代码操作符create创建被观察者 转换符map实现字符串转换 subscribeOn 线程池转...
2019-08-26 15:16:23
159
原创 【android学习】泛型通配符extends与super区别
泛型关键字说明<? extends T>:是指 “上界通配符”?>=T <? super T>:是指 ”下界通配符“?<=T类型结构图在类中 extends 与 super对比?所代表得类,是Meat得父类 即?>=Meat ,本例中?这里可以代表为Meat,Food这两种类型 补充: 出错的两句的?这里,泛型要求传...
2019-08-23 15:29:37
346
原创 【android学习】RXJava2方法简介
简介一个可观测的序列来组成异步的、基于事件的程序的库。(简单来说:它就是一个实现异步操作的库)GitHub地址:https://github.com/ReactiveX/Rxjava三个基本元素 分别为被观察者(Observable),观察者(Observer),订阅者(subscribe)观察者(Observable)onSubscribe() 订阅观察者的时候...
2019-08-20 22:47:37
160
原创 android架构师之路——插件化换肤
简介模块化:将一个项目的可以共享的部分抽取出来,形成独立的lib 组件化:组件化本来就是模块化的概念。核心是模块角色的可转化换性,在打包时,是library;调试时,时application 插件化:将一个完整的工程,按业务划分为不同的插件,来化整为零,相互配合。插件化的单位是apk(一个完成的应用)。 可以实现apk 的动态加载,动态更新,比组件化更灵活。...
2019-08-11 17:22:15
214
原创 【android学习】AIDL跨进程通信
简介AIDL 意思即 Android Interface Definition Language,翻译过来就是Android接口定义语言,是用于跨进程之间通信AIDL支持的数据类型分为如下几种:八种基本数据类型:byte、char、short、int、long、float、double、boolean String,CharSequence 实现了Parcelable接口,S...
2019-08-07 17:49:10
142
原创 【android学习】APP图片内存计算
图片尺寸大小计算当图片文件放在项目的drawable目录时候:drawable文件尺寸与pc中文件尺寸关系目录 屏幕密度 drawable-ldpi 120dpi drawable-mdpi 160dpi drawable-hdpi 240dpi drawable-xhdpi 320dpi drawable-xxhdpi 480dp...
2019-07-30 18:25:11
441
原创 android架构师之路——面向对象数据库
简介BaseDaoFactory 数据库创建,初始化 IBaseDao 增删改查接口 BaseDao 增删改查具体的实现 User 增删改查的对象 DbField 数据库字段名字标注 DbTable 数据库表名注解我们这里只要是学习对象型数据库实现原理,如果要直接使用,可以查看GreenDao直接使用BaseDaoFactorypublic class BaseD...
2019-07-30 11:15:11
191
原创 android架构师之路——APP外置换肤原理解析
简介前面两个项目android架构师之路——修改app字体讲解了LayoutInflaterCompat.setFactory2的使用方式 android架构师之路——以修改一个图片文件方式讲解APP换肤原理讲解了换肤的原理现在我们就在具体实践中,讲解一下更多的使用场景项目结构app:主项目目录 app_skin:资源项目,生成的apk放在sdcard目录 lib_sk...
2019-07-21 17:53:35
463
原创 android架构师之路——以修改一个图片文件方式讲解APP内置换肤原理
简介app换肤,就是将我们设置的对应资源文件,比如drawable,style,textSize等,替换成资源包里面的数据这里我们将以一个简单的替换drawable资源文件,来讲解其原理先来开一个方法,当我们调用getMyResource(R.mipmap.ic_launcher)时候 private int getMyResource(int resId) { ...
2019-07-21 13:46:07
923
afinal jar包
2015-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人