- 博客(14)
- 收藏
- 关注
原创 从0到1搭建MVP框架
简书:https://www.jianshu.com/p/172c67b37fb0相信大多处在Android进阶阶段的朋友都了解过Android框架方面的知识,要开发一款优秀的app,自然少不了优秀的应用框架。好的框架能够让你的代码变得更加简洁易读,也更有利于后续开发和维护。MVP框架即Model、View、Presenter,其优点是将View和Model解耦,在View层只需要执行...
2018-07-27 09:15:41
1753
2
原创 设计模式学习:单例模式
概念单例模式Singleton也是一种用于创建对象的设计模式单例模式用于一个单一的类,让这个类自己负责创建自己的实例对象,并对外提供一个访问该实例对象的方法单例模式有多种类型,包括饿汉式、懒汉式(分线程安全和线程不安全)、双重验证、静态内部类、枚举单例和容器实现特点单例类只能有一个实例,这个实例只能由类自身创建单例类必须对外提供一个能够获取这个实例的方法懒汉式是在调用获取实例的方法时创建实例饿汉式...
2018-05-29 21:29:42
303
原创 设计模式学习:工厂模式
概念工厂模式分工厂方法模式和抽象工厂模式,抽象工厂模式是工厂方法模式的扩展工厂模式使用一个工厂方法代替new关键字来实例化对象工厂定义一个接口来创建对象,但是让子类来决定哪些对象需要被实例化工厂方法模式类图:抽象工厂模式类图:作用降低了对象类和使用类的耦合性,当对象类发生变化时,使用类并不需要作出过多的修改使用场景有一组类似但不是同一个类的对象需要创建在编码时不能预见需要创建哪种类的实例(动态创建...
2018-05-29 09:15:46
206
原创 设计模式学习:适配器模式
概念适配器即把原本不兼容的接口连接在一起,使其可以正常使用的工具适配器模式的作用就是将现有的一种接口,转换成所另一种所需的接口,使得原本由于接口不兼容而不能一起工作的类可以正常工作例子现在很多手机为了获得更好的防水性能,都取消了原本的3.5mm的耳机孔,让我们原本的耳机变得没有用武之地。为了弥补这个不便,手机厂商都会附赠一个转接器,让我们的耳机可以通过转接器连接到充电孔,这样就可以正常使用耳机了。...
2018-05-28 20:30:58
221
原创 设计模式学习:模板方法模式
模板方法的概念1、规定一个执行流程,所有对象的执行过程都依据这个流程2、把所有对象中相同操作的步骤直接实现,封装在这个框架中3、把因对象而异的操作交由具体的对象子类实现模板方法举例这里用在学生食堂打饭举一个例子:学生去食堂打饭都有一个固定的流程:排队 -> 选择菜品 -> 付钱,这个流程是每个学生都要遵守的,你不能直接插队去打饭,更不能吃饭不给钱;而这三个步骤中,排队是每个学生都需要执...
2018-05-28 13:13:08
141
原创 Android进程间通信(一) Binder的简单使用
一、为什么要进行进程间的通信?进程通信指的是两个不同的进程之间进行数据交换的过程,这个进程和线程是两种完全不同的概念。线程指的是CPU调度的最小单元,是一种有限的系统资源;而进程是一种执行单元,应用至少要有一个进程才可以运行(一个应用也可以有多个进程)。众所周知,Java是在JVM中运行的,在Android中,系统会为每个进程分配一个虚拟机,因此,在不同的进程中,内存里数据是不能直接进行交换的,所...
2018-04-03 09:01:29
723
原创 GridView网格视图
网格视图GridView是一种常见的适配器视图,用于以网格的方式显示信息基本属性GridView的属性及说明xml文件中的属性GridView类的设置方法说明horizontalSpacingsetHorizontalSpacing指定每个网格在水平方向上的间距verticalSpacingsetVertcalSpacing指定每个网格在垂直方向上的间距numColumnsetNumColumn设...
2018-03-23 16:27:34
377
原创 Android:EditText回车跳到下一个输入框或登录
创建一个工具类ViewUtil在工具类中创建文本检查者public static class JumpTextWatcher implements TextWatcher { private EditText mThisView = null; private View mNextView = null; public JumpTextWatche...
2018-03-15 22:42:23
6288
原创 Android自动截图生成缩略图
Android自带屏幕截图功能,截图面向所有视图,我门可以从其他控件或布局那里截图下来,然后显示在ImageView上面。使用截图功能必须通过代码完成,相关方法如下:setDrawingCacheEnabled:设置绘图缓存的可用状态isDrawingCacheEnabled:判断控件的绘图缓存是否可用setDrawingCacheQuality:设置绘图缓存的质量getDrawingCache:...
2018-03-13 15:38:23
706
原创 自定义TextView:打造渐变文本控件
相信大家都见过QQ空间黄钻专属的渐变文字展示,那么这种效果是怎么实现的呢?其实很简单,只需一小段代码就能实现文字渐变的效果。Demo效果如图该效果是利用LinearGradient和Matrix来实现的实现代码:public class GradientTextView extends android.support.v7.widget.AppCompatTextView { priva...
2018-03-08 21:03:45
575
原创 图标(drawable)着色
1、 /** * 为ImageView中的drawable着色 * * @param view ImageView控件 * @param colorResId 着色的颜色id */ public void setViewDrawableColor(ImageView view, int colorResId) { ...
2018-02-27 21:55:52
614
原创 Android底部导航栏控件:BottomNavigationView的简单使用
底部导航栏的实现方式多种多样,可以使用LineatLayout或者RadioGroup自定义控件,也可以直接使用第三方提供的如BottomNavigationBar、BottomBarLayout这些功能更多的控件。而如果我们只是想实现一个简单的只用来切换页面的底部导航栏,使用自定义控件的方法有一堆设置切换图标、selector之类的步骤太过繁琐,使用第三方的控件又有一种杀鸡用牛刀的感觉,因此我们...
2018-02-27 10:56:55
7998
2
原创 Activity和Fragment、Fragment和Fragment之间的通信
虽然Fragment是嵌套在Activity中显示的,但是Fragment和Activity是存在于不同的类中的 ,之间并不能进行直接通信一、Activit和Fragment的通信在Activity中,可以通过getSupportFragmentManager().findFragmentById()或者是findFragmentByTag()的方法来获取Fragment的实例对象在Fragmen...
2018-02-25 22:32:16
261
原创 Android数据库单例SQLiteOpenHelper
在sqlite中多次打开数据库,对数据库进行高并发操作,容易造成锁表, 对此可以在只打开一次数据库的情况下,对数据库进行多次操作。新建一个MyDatabaseHelper继承自SQLiteOpenHelper使用volatile声明一个MyDatabaseHelper对象,通过getDBHelper()方法来获取唯一实例private volatile static MyDatabaseHelpe...
2018-02-23 17:43:58
1021
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人