- 博客(17)
- 收藏
- 关注
原创 安卓自动吸附,可拖动悬浮窗
import android.animation.ObjectAnimator;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.Vi...
2019-07-11 10:34:35 4147
原创 AsyncTask 源码分析
AsyncTask 内部实现原理主要是两个线程池和一个handler。两个线程池分别为SerialExecutor和ThreadPoolExecutor。其中SerialExecutor是维护一个有序队列;ThreadPoolExecutor是执行任务的线程池。handler是InternalHandler 执行异步操作的。1.首先我们先来看下AsyncTask 的构造方法。 pu...
2019-05-09 14:24:15 160
原创 检查用户名密码是否都有内容的工具类
public class CheckEditForButton implements TextWatcher { // 声明一个监听器 private EditTextChangeListener mListener; private TextView mTextView; private EditText mEditTexts; private EditText mEditText...
2019-04-30 10:58:30 163
原创 安卓造成内存泄漏的几个原因
1. 静态变量引起的内存泄露 public class CommUtil { private static CommUtil instance; private Context context; private CommUtil(Context context){ this.context = context; }...
2019-03-28 09:32:58 325
原创 安卓中的布局优化之clude、merge、ViewStub
1.includeinclude标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,也是平常我们设计布局时用的最多的。需要注意的是如果一个根布局引入多个include需要每个include加上id的属性,在代码中使用的时候要先通过id找到inclued标签。include_text_relative.xml<LinearLayout xmlns:andro...
2019-03-26 15:39:08 294
原创 安卓中的差值器和估值器
1.差值器TimeInterpolator从名字上可以看出,这个是跟时间有关的,差值器只是能修改速率的一种东西。比如,匀速,快到慢,慢到快,快慢快或者慢快慢。安卓本身提供给我们两个内置的差值器1.匀速插值器:LinearInterpolator2.先加速再减速 插值器:AccelerateDecelerateInterpolator自定义差值器public class Decele...
2019-03-21 15:58:25 590
原创 安卓中图片的压缩
在讲压缩的方法之前我们先来了解两个概念1.图片的存在形式是三种:1.文件的形式。(以二进制流存在于硬盘中)2.流的形式。(以二进制流存在于内存中)3.bitmap位图形式。2.图片常用的压缩格式:1.ALPHA_8 表示8位Alpha位图,即A=8,一个像素点占用1个字节,它没有颜色,只有透明度2.ARGB_4444 表示16位ARGB位图,即A=4,R=4,G=4,B=4,一个...
2019-03-07 15:57:37 151
原创 工厂模式和抽象工厂模式
了解抽象工厂模式前,我们先来了解两个概念。一种是元素;一种是所含元素组成的成品;比如我们的衣服 组成衣服的元素是布料和颜色。布料和颜色就是元素,衣服是元素组成的成品。同样裤子也是由布料和颜色组成的。那么衣服和裤子就相当于两个不同的成品。那么在抽象工厂模式中,我需要衣服就给我一件衣服,我需要裤子就给我一条裤子。就是想要什么就直接要就有了。下面我们来看看代码。首先来定义下两个元素颜...
2019-02-28 17:09:15 130
原创 插入排序和选择排序
/** * 插入排序 * * 从第一个元素开始,该元素可以认为已经被排序 * 取出下一个元素,在已经排序的元素序列中从后向前与取出的元素比较, * 如果该元素(已排序)大于新取出的元素,将该元素移到下一位置 * 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 * 将新元素插入到该位置中 * 重复步骤2...
2019-02-27 17:30:09 831
原创 synchronized关键字
synchronized关键字能作用的范围有类,方法,静态方法,代码块。1.类锁和静态方法锁,锁的都是类的对象。2.方法,和代码块锁锁的都是类。相当于锁的有两个种类,一种是对象锁,一种是类锁。关于“实例锁”和“全局锁”有一个很形象的例子:pulbic class Something { public synchronized void isSyncA(){} public...
2019-02-26 15:23:00 119
原创 安卓中的事件分发
我们先从分发的对象以及作用的方法讲起典型的事件有以下三种:ACTION_DOWN:手指刚接触屏幕的瞬间、ACTION_MOVE:手指在屏幕上滑动、ACTION_UP:手指刚离开屏幕的瞬间。事件分发的三个对象:activity、viewgroup、view。作用的三个方法:dispatchTouchEvent()、onInterceptTouchEvent()、onTouchEvent()。...
2019-02-26 10:13:39 473
原创 通透的分析handler的工作流程
Handler的使用主线程中使用handlerstatic class MyHandler extends Handler { WeakReference<Activity > mActivityReference; MyHandler(Activity activity) { mActivityReference= new WeakRefe...
2019-02-20 15:15:16 170
原创 安卓按home健后从后台返回前台
这是一个从后台返回前台需要验证手势密码中提取出来的代码首先判断程序是否处于后台 /** * 判断当前应用程序处于前台还是后台 */ public static boolean isApplicationBroughtToBackground(final Context context) { ActivityManager am = (Activity...
2019-02-19 17:38:44 435
原创 一个简单的环形渐变色进度条
1.首先在values里设置下自定义控件的属性 <?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="RingProgress"> <!--画笔宽度--> <attr name=&quo
2019-02-19 10:45:47 2187 2
原创 浅析activity的四种启动模式
1.standard默认的启动模式,每次都会在栈内新启动一个新的activity。2.singletop当启动activity时,若当前activity处于栈顶,则会复用这个activity,不启动新的activity,会调用Activity.onNewIntent()。3.singletask当启动activity时,若栈内一直存活着这个activity,则会复用,会调用Activit...
2019-02-14 16:15:13 141
原创 浅谈Service
前言Service是安卓四大组件之一,一般用于开启后台服务(音乐播放,和后台下载)。Service的两种生命周期一种是通过startService()开启的服务: onCreate()→onStartCommond()→onDestroy()另一种是通过bindService()开启的服务:onCreate()→onBind()→onUnBind()→onDestroy()如果使用sta...
2019-02-14 11:38:29 133
原创 CSDN-markdown编辑器
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2019-02-13 14:14:22 118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人