自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第六章:View常见相关面试题

根据不同的测量模式返回不同的specSize,specSize是View的测量大小。也就是说对于一个继承自View的自定义View来说,它的wrap_content和match_content属性的效果是一样的。getMeasuredWidth()获取的是view原始的大小,也就是这个view在XML文件中配置或者是代码中设置的大小。getWidth()的是这个view最终显示的大小,这个大小有可能等于原始的大小也有可能不等于原始大小。解决方法是重写onMeasure方法,在里面根据不同的模式去写死处理。

2024-12-22 17:35:12 247

原创 第五章:自定义View

自定义View继承系统控件(比如TextView)继承View自定义ViewGroup继承特定的ViewGroup(比如RelativeLayout)继承ViewGroup自定义组合控件这种一般都是添加新的功能或者修改显示的效果,通常在onDraw方法里面处理initDraw();initDraw();@Override效果如下。

2024-12-22 17:34:27 250

原创 第四章:View的工作流程

View的工作流程,指的就是measure,layout,draw。measure用来测量View的宽和高,layout用来确定View的位置,draw用来绘制View。

2024-12-22 17:33:45 610

原创 第三章:View事件分发机制

伪代码总结下} else {onInterceptTouchEvent方法和onTouchEvent方法都是在dispatchTouchEvent方法中执行。分发事件入口是Activity,然后是PhoneWindow,然后是DecorView,最后传递给顶层的ViewGroup。

2024-12-22 17:33:03 790

原创 第二章:属性动画

在Animator框架中使用最多的就是AnimatorSet和ObjectAnimator配合。

2024-12-22 17:32:18 295 1

原创 第一章:View坐标系

View的滑动是Android实现自定义控件的基础,基础思想就是:当点击事件传到View时,系统记录下触摸点的坐标,手指移动时系统记下移动后触摸的坐标并算出偏移量,并通过偏移量来修改View的坐标。在android中,将屏幕左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,向下是Y轴正方向,另外在触控事件中,使用getRawX方法和getRawY方法获取的坐标也是Android坐标系的坐标。系统已经提供了方法,源码如下,和上面是一样的。View获取自身宽和高。

2024-12-22 17:31:08 311

原创 第三章:LiveData

是一种可观察的数据存储器类,具有感知生命周期感知能力,可确保LiveData仅更新处于活跃生命周期的应用组建观察者。

2024-12-22 17:26:29 135

原创 第二章:ViewModel

ViewModel旨在以注重生命周期的方式存储和管理界面相关的数据,ViewModel类可在发生屏幕旋转等配置更改后让数据继续保存比如第一章中的发生屏幕旋转后倒计时的数据就会丢失。

2024-12-22 17:25:46 351

原创 第一章:Lifecycle

上述代码完全可以实现,但是不太优雅,开发者需要在Activity对应生命周期的方法中主动执行相关的方法,如果业务越来越大,就会导致Activity层的处理逻辑难以维护。dialog的Context必须是activity的上下文,因此完全可以在Dialog中使用Lifecycle组件来感知生命周期。ReportFragment是一个无页面的fragment,用来协助activity处理任务的,对应的生命周期代码如下。实现LifecycleObserver接口,在对应的生命周期中写方法。

2024-12-22 17:24:45 342

原创 AIDL简介

什么是AIDL一种IDL语言,用于生成可以在android设备上两个进程之间进行进程间通信(IPC)的代码,可以在一个进程中获取另一个进程的数据和调用其暴露出来的方法,从而满足进程间通信的需求。通常,暴露方法给其他应用进行调用的应用称为服务端,调用其他应用的方法的应用称为客户端,客户端通过绑定服务端的 Service 来进行交互。

2024-12-22 17:08:40 354

原创 APK混淆后如何定位BUG原因

我这个是bussiness这个包里面g这个包里面i这个类,然后打开自己项目代码比对发现i这个类是RouteResultLayer这个类,反编译出错的是i这个类里面的void a(boolean)这个方法,发现是调用这个setCarEnable方法的对象有可能出现空指针。线上报出一个空指针的BUG,但是代码是加密的,所以根据不太好查问题,可以使用jadx工具先反编译在查问题,过程如下。3.打开工具jadx-gui,选择apk文件反编译。比如反馈的这个bug需要使用对应的版本进行反编译。

2024-12-08 20:50:39 314

原创 Android内存分析工具

按照上面的操作,先进入再退出两次,记录hprof文件,然后再进入退出三次,记录hprof文件,理论上第一个文件应该又两个SecondActivity,第二个文件应该有5个SecondActivity。可以看出SecondActivity的个数是3个,ObserveObject的个数是6,肯定是有问题的,这是因为内存泄露导致SecondActivity还存在。在上述的操作过程中,SecondActivity的数量是不应该增加的,说明发生了内存泄露。列出内存中的对象,对象的个数以及大小。

2024-12-08 20:37:02 963

原创 Android 常见linux命令

使用"cp"命令可以拷贝一个文件到另一个位置,而"mv"命令可以把一个文件完全移到另一个位置,即物理地移动文件,同时可以修改文件的名字和后缀。删除目录,必须要有权限,而且删除的目录必须是空目录。拷贝多个文件到一个目录下,适用于大批的文件复制。Filesystem:文件系统的名称。删除文件,"rmdir"是删除目录的。Available:可用的大小。当前目录以及所有子目录的大小。复制一个文件到另一个新文件。创建test.txt文件。Used:已使用的千字节。所有的目录和文件的大小。当前目录下创建新目录。

2024-12-08 20:25:43 345

原创 android 常见adb命令

adb shell am dumpheap /data/local/temp/heapdump.hprof。指的是要发送的广播,比如:com.example.Action。adb shell pm list packages | grep ‘包名’把tmp文件夹下面的所有文件pull下来,不包含tmp文件夹。push apk文件夹下面所有的文件,不包含apk文件夹。adb shell ps | findstr 包名。-es:String类型。-r表示强制覆盖安装。

2019-03-16 21:28:37 524 1

原创 rxjava实现定时器

rxjava实现定时器,每隔一段时间发送一次请求。//rxjava2.xcompile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.1.0'首先声明一个Disposable对象private void startCount(){ //5秒后之后,发送,每...

2019-03-10 14:58:14 1965

原创 android 一个事务的sql删除和新增,sql失败后回滚

private DatabaseHelper db;public ProductDao(Context context) { db = DatabaseHelper.getInstance(context); try { dao = db.getDao(ProductEntity.class); } catch (SQLException e) { ...

2018-12-25 23:23:26 463

转载 支付宝支付和微信支付

http://www.jianshu.com/p/66a7fe2effaf

2017-03-03 10:25:06 223

空空如也

空空如也

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

TA关注的人

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