Android 组件
文章平均质量分 60
qq_33487412
这个作者很懒,什么都没留下…
展开
-
MVP模式中的小技巧:软引用与弱引用
在MVP当中,过多的类导致了内存控制十分困难,而强引用又很容易导致OOM(GC时不会回收被强引用持有的对象),在这个时候就轮到其他的两中对象引用的方式:软引用与弱引用登场了(虚引用几乎不会被用到)介绍软引用 在系统内存不够时,会回收被软引用持有的对象,引用方法如下//T可代表任何对象SoftReference<T> reference = new SoftReference<T>(t0);原创 2017-10-15 20:53:07 · 2089 阅读 · 0 评论 -
Android绘制流程总结
我们在自定义实现一个自定义view的时候,往往需要重写它的onDraw()方法,在这个方法中,我们可以获取到它的Canvas对象,那么,这个Canvas对象是怎么得到的呢?首先我们知道Activity的视图是由一个Window来进行显示的,具体来说是一个Phone Window对象,而每个窗口又都会包含一个Surface,而Canvas就是由这个得到的,具体流程如下:当窗口需要绘制UI时...原创 2018-08-25 17:56:00 · 284 阅读 · 0 评论 -
Android事件分发机制总结
Android中的事件分发机制是我们实现触摸反馈、拦截等等的基础,了解了事件分发机制,对于触摸反馈事件失灵、多点触控等等的实现和疑难解决,都有一个敏感的认知。一切的开始: Activity的处理当我们的Android手机接收到手指的触摸动作的时候,手机会把这个动作包装成 MotionEvent ,之后这个 MotionEvent 事件会首先被Activity处理,源码如下:...原创 2018-07-30 23:09:28 · 155 阅读 · 0 评论 -
锁、重入锁与条件
Java中的锁框架指的是java.util.concurrent.locks这个包里的,不同于对象的内置加锁同步以及java.lang.Object的等待/通知机制,包含锁框架的并发工具通过轮询锁、限时等待及其他方式改善了这种机制。锁这里的锁指的是接口Lock方法包含了如下几种方法:void lock():获取锁。当锁不可用时,调用线程会被强制一直等待直到锁可...原创 2018-06-30 15:56:46 · 1540 阅读 · 0 评论 -
Android NDK调用不符合jni规范的so文件
我们在使用Android静态加载so库的时候,一般都需要这个so库是符合jni命名规范的,像这样: Java_全类名_方法名但是可能会遇到一些比较特殊的情况,同事只给了你一个so库,这个so库并不是用的jni命名,除此之外,他还给了你一个so库中函数的头文件,这时候我们就需要自己再次包装这个so库了。建立java文件这里建立的java文件命名可以是自定义的,而不需要遵守某...原创 2018-06-30 15:55:57 · 1907 阅读 · 0 评论 -
Android编译时注解
这个寒假用空闲时间做了一个基于编译时注解的RxBus,目前还没有做工程化处理,但是基本的功能已经写好,欢迎大家star和forkRxEventBus趁着寒假最后一天来写一下开发过程。编译时注解总结注解分为源码级注解、编译时注解与运行时注解,编译时注解和运行时注解时被经常用到的,但是运行时注解因为使用了反射机制,所以在性能上会有所降低,编译时注解就成了最受追捧的注解方式。...原创 2018-02-23 15:07:14 · 399 阅读 · 0 评论 -
AsyncTask解析
在Android AsyncTask中有以下几个主要的函数:onPreExecute()doInBackground(Params…)onProgressUpdate(Progress…)onPostExecute(Result)函数的作用及解析onPreExecute()这个方法是在主线程中执行的,一般在任务执行前做准备工作。doInBackground...原创 2018-02-15 15:07:05 · 190 阅读 · 0 评论 -
DialogFragment实现自定义布局的小技巧
DialogFragment可以说是用起来很方便,也很容易上手的一个类了,上次博客写了一篇关于将DatePicker放入DialogFragment中的文章,之后又遇到了将一整个布局放入DialogFragment中的情况,写着来记录一下一般来说,我们在DialogFragment中放入一个View只需要像这样写View v = LayoutInflater.from(getActivity().原创 2017-10-29 19:44:37 · 1914 阅读 · 0 评论 -
NDK实现毛玻璃效果完全教程
前几天准备做一个动态的毛玻璃效果,中间查阅了很多网上的资料,我用的方法是CMake做NDK,由C/C++来实现图片的毛玻璃化,废话不多说,具体方法如下首先,当然是配置NDK环境,这类网上教程很多,就麻烦自行配制了,参考教程如下 http://blog.csdn.net/xiaoyu_93/article/details/53082088这里配置好之后我们还需要在gradle中配置一下NDK开原创 2017-10-15 19:33:35 · 301 阅读 · 0 评论 -
自定义ViewGroup之扩展FloatingActionButton
本文主要是实现一个ViewGroup容器,并实现在内部自由放置FloatingActionButton,与各种FloatingActionButton开源库不同的是只侧重基础的实现,但实际效果还算美观。原创 2017-10-02 21:19:08 · 367 阅读 · 0 评论 -
Android中设置界面PreferenceFragment的用法
发现Android虽然为我们提供了很好的设置界面的东西(也就是这个PreferenceFragment),但是网上的资料还真是少之又少,可能大家的需求都是自己做设置界面,不稀罕Google为我们做好的,不过既然用到了这个东西,还是拿出来做下笔记第一步,我们现在res中写一个preferences.xml文件,当然你也可以命名成其他的名字文件目录如下: 根文件布局是PreferenceScreen原创 2017-10-16 17:22:31 · 3912 阅读 · 0 评论 -
android图片状态栏实现沉浸式状态栏
沉浸式状态栏实现起来的文章网上有很多了,不过再MD中有一个图片和toolbar一起使用,还会产生过度效果的沉浸式状态栏,像下面这样 标题栏XML代码如下<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height原创 2017-10-22 16:51:26 · 5871 阅读 · 0 评论 -
DialogFragment实现DatePicker
先上效果图 要实现这个效果,首先,我们得先创建一个Dialogfragment,注意我们只重写onCreateDialog函数,其他的函数就不用管了,在此之前我们先写好xml文件,很简单,只需要把datepicker作为根布局就可以了 datepicker.xml<?xml version="1.0" encoding="utf-8"?><DatePicker xmlns:andro原创 2017-10-22 17:19:14 · 406 阅读 · 0 评论 -
使用委托模式在Activity中操作RecyclerView中的item
RecyclerView与ListView不同,无法直接通过setItemClicklistener来获得单个item的点击时间,这个时候,我们可以通过在adapter中定义接口,并在Activity中实现相应接口来获得每个Item的点击事件,也就是标准的委托模式。具体做法如下:第一步 在Adapter类中定义内部接口,我自己定义的如下: /** * 在活动中实现的接口 */原创 2017-10-29 20:13:28 · 1788 阅读 · 0 评论 -
Parcelable序列化类在Activity、Fragment之间通信
要让一个类的对象序列化,我们首先得让这个类实现Parcelable接口,我自己定义的一个类如下:public class NewPlan implements Parcelable{ private Long id; private String location; private long startTime; private long endTime; p原创 2017-11-12 20:15:26 · 729 阅读 · 0 评论 -
Proguard学习及App混淆
proguard-android.txt与proguard-android-optimize.txt当我们打Release的时候,Google会默认对我们的release包进行优化,这个优化是通过在modeule中build.gradle中的minifyEnabled来开启的。android { buildTypes { release { mi...原创 2019-07-21 14:49:12 · 428 阅读 · 0 评论