- 博客(34)
- 资源 (15)
- 收藏
- 关注
原创 抽象工厂模式
创建型设计模式–>抽象工厂模式抽象工厂也是创建型模式之一。定义: 为创建一组相关或者是相互依赖的对象提供一个接口,而不需要 指定他们的具体类。使用场景: 一个对象组由相同的约束时可以使用抽象工厂模式。简单实现: /** * 抽象产品类A * 抽象产品角色,它为每种产品声明接口 */ public abstract class AbstractProductA { /** * 每个具体的产品子类需要实现的方法 */ pub
2021-05-01 13:41:26 92
原创 工厂方法模式
应用最广泛的模式–> 工厂方法模式工厂方法模式是创建型设计模式之一。定义:定义一个用于创建对象的接口,让子类决定实例化哪个类。使用场景:任何需要生产复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new 就可以完成创建对象无需使用工厂模式。工厂方法通用模板 // 抽线产品类 public abstract class Product { /** * 产品类的抽象方法 */ public abstract void me
2021-04-29 17:11:44 77
原创 设计模式之单例模式
单例模式 一个类只有一个实列,而且自行实例化并向整个系统提供这个实例。 实现单例模式有以下几个关键点: 1.构造函数不对外开放,一般为Private; 2.通过一个惊呆方法或者枚举返回单例对象; 3.确保单例类的对象有且只有一个,尤其是在多线程环境下; 4.确保单例类对象在反序列化时不会重新构建对象。1. 饿汉单例模式 public class Singleton { privat...
2021-04-25 16:18:42 102
原创 Kotlin基础
Kotlin 基础变量Kotlin 变量分为两种:- 可变变量+ 可变变量对应于Java 的普通变量。+ 可变变量用 var 来修饰,可以进行多次修改。- 不可变变量+ 不可变变量相当于Java中用final关键字修饰的常量。+ 不可变变量用 val 来修饰,只能进行一次初始化。 声明变量: var 变量名:数据类型 val 变量名 :数据类型 示例:...
2019-09-22 23:29:54 366
原创 面向对象六大原则
面向对象六大原则面向接口编程(面向抽象编程)、 职责单一、 对修改关闭、对扩展开放、优化代码第一步 --> 单一职责原则英文全称是 Single Responsibility Principle ,缩写式 SRP。一个类中,应该仅有一个引起它变花得原因。简单说,一个类中应该是一组相关性很高得函数、数据封装。让程序更稳定更灵活 --> 开闭原则英文全称是 Open C...
2019-09-18 21:03:37 287
原创 文件大小转换工具类
文件大小转换工具类最简单得文件大小转换工具 /** * * @param bytes 转换得字节 * @param si 是否需要单位 * @return */ public static String byteFormat(long bytes, boolean si) { String[] units = n...
2019-01-06 22:39:09 1213
原创 监听截屏工具类
监听截屏工具类/** * 截屏监听管理器 <br/><br/> * <p> * <p> * 截屏判断依据: 监听媒体数据库的数据改变, 在有数据改变时获取最后 * 插入数据库的一条图片数据, 如果符合以下规则, 则认为截屏了: <br/> * <p> * 1. 时间判断, 图片的生成时间在开始监听之后, 并与当...
2019-01-06 22:31:10 348
原创 线程池工具类
线程池工具类public class ThreadPoolManager { public static ThreadPool instance; // 获取单例的线程池对象 public static ThreadPool getInstance() { if (instance == null) { synchronized...
2019-01-06 22:28:57 2167 3
原创 Android文件解压
Android 解压工具类请注意以下解压工具 是不支持中文路径 /** * * @param archive 解压文件得路径 * @param decompressDir 解压文件目标路径 * @param isDeleteZip 解压完毕是否删除解压文件 * @throws IOException */ publi...
2019-01-06 22:25:47 4718 5
翻译 Android SoundPool只能播放6秒 mp3 文件
在项目中使用 SoundPool 播放提示音的时候 遇到了 一个只有不到10秒的音频文件,在使用使用的时候只播放 了5、6秒的样子,完全不能全部播放完毕。在google 各种搜索相关资料的时候,终于还是被我发现了。 在 stackoverflow 上面找到了相关解决问题的方法。原文地址:Android SoundPool can only play 6 seconds mp3? ps: 注意可能...
2018-12-22 11:07:13 2880
原创 Java 时间日期
获取日期 String todayDate = SimpleDateFormat.getDateInstance().format(new Date()); SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd); String date = s.format(new Date());获取日期和时间String s...
2018-10-09 22:17:12 110
原创 Android studio 引入 Module
Android studio 引入 ModuleFile --> Import Module ---->导入要引入的库 ------>Finish.如果 引入的库没有没有成功编译 ,则在 跟目录找到 settings.gradle 打开 这个文件 inculde 后面添加引入库的名字,注意 库 名字前要加 ’ :’ 用来区分是库还是 主项目。...
2018-10-09 11:52:58 237
原创 Android studio 使用过程遇到 错误 解决 笔记
Android studio 使用过程遇到 错误 解决 笔记有时候代码可能会少个(),或者是删除了某一行代码以及一个方法,项目报红没有发现,在 运行 app 的时候回直接报 :Compilation failed; see the compiler error output for details.这个提示给的很不友好好,一点都不明确是什么原因就报错了,解决方法: 命令行...
2018-09-05 13:34:09 291
原创 Handler 源码 走一走,看一看
Handler 源码 走一走,看一看 Handler 是如何发送和处理消息文章将分为以下几步介绍 HandlerHandler 是做什么的?为什么使用Handler? Handler 是如何使用的?Handler 通过new 创建以后都做了什么?Handler 是如何发送和处理消息的使用Handler 应该注意什么Handler 是做什么的?Handle...
2018-04-26 17:53:52 2718
原创 Activity 过度动画让界面切换实现如牛奶般润滑的切换
在Activity界面切换的时候 ,我们都是是通过统一的动画来管理activity 进入进出,这种动画都写在xml 文件里面,并在 开启activty 之后开始调用 动画的,(startActivity(context,class); overridePendingTransition(inId,outId))来进行界面的切换,但是这样的切换不免给用户带来的是生硬的切换,没有那么一丝的顺
2017-03-03 18:04:07 939
原创 自定义View(一)
#### 不知不觉告别了2016,迎来了2017年,回顾这一年,收获颇多.这一年结识了志同道合的一群小伙伴,每天都逗逼这讨论着 美女、技术、以及互相撩骚,充满着欢乐而又充实的生活。很感谢我的小伙伴们,都是满满的正能量。 - 如何自定义 View 呢? - 如何把写入 xml 里面的属性和值,告知 View 呢? - 如何把我们想要的 View 显示到屏幕上呢? ####
2017-01-02 19:02:01 283
转载 Http协议详解(一)
本文转自:老李的地下室 引言HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下
2016-11-17 09:19:43 423
原创 java 8 Lambda 表达式你会用了吗?
jdk1.8没有添加新的关键字 lambda ,而是用()->{} 这么一个表达式符号来表示 lambda 这么一个新鲜的函数是为了什么?使用 这个表达式 有可以给我们带来什么样的好处呢?敬请关注 本台 Lambda 的无穷大在写之前肯定是要看关于 lambda 文章的,这篇文章很简单就是告诉你 lambda 函数是如何使用的 ( Java 8新特性:lambda表达式),要想详细了解 Lambda
2016-10-31 09:16:35 622
原创 Gradle for Android studio 的基本认识(一)
引用:Gradle是一种基于Groovy的动态DSL,而Groovy语言是一种基于jvm的动态语言。Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。一般我
2016-10-26 16:54:24 353 2
原创 Android 5.0 Toolbar 的学习使用
参考来自:官方以及AigeStudio在没有 Toolbar 出来之前我们都是使用的 ActionBar,但是 ActionBar 的可定制行太低,完全不能满足我们的App,在 ToolBar 之前 我们都是通过自定义 layout 来满足我们App的标题栏! 在5.0 以后 我们可以 通过ToolBar 来满足我们的标题栏,并且可以遵循 官方的 Material Design 的设计风格。下面就来
2016-10-20 18:41:50 410
原创 android 获取手机通讯录以及 6.0 授权
获取手机通讯录获取手机通讯录需要使用到 ContentProvider 的观察者 ContentResolver 来获取。` //获取手机通讯录联系人 ContentResolver resolver = this.getContentResolver(); // 获取手机联系人 Cursor phoneCursor = resolver.query(ContactsContr
2016-06-14 16:26:03 12147 2
原创 viewpager不返回最大值实现轮播
private boolean isAutoPlay = false; private long currentTime; @Override public void onPageScrollStateChanged(int state) { ViewPagerS#CROLL_STATE_IDLE * @see
2016-06-06 21:10:14 313
原创 关于图片使用缩放不起作用这是就需要使用 Matrix
if (mSelectPostion == position) {// Bitmap bitmap = ((BitmapDrawable)iv.getDrawable()).getBitmap(); Matrix matrix = new Matrix(); matrix.setScale(1.2f, 1.2f);
2016-06-06 21:07:58 850
原创 把 view 转换成bitmap对象
View mViewInflater = LayoutInflater.from(this).inflate(R.layout.item_gallery, null); ImageView mGalleryImage = (ImageView) mViewInflater.findViewById(R.id.gallery_image); mGalle
2016-06-06 21:06:40 1600
原创 使用 recyclerView 布局显示不合理的问题
在项目中 RecyclerView 替代了 listVeiw 和 GridView ,但是在使用过程难免不出现问题。比如 itmen 的布局文件 width 使用 match_parent ; 这个属性的时候却出现了显示 warp_content 现象,也就是包裹内容,但是在预览界面就是显示正常的。解决方法: @Override public MyViewHolder onCreateVi
2016-05-30 10:04:51 724
原创 验证码倒计时
上次写过系统提供的验证码倒计时的一个类 CountDownTimer 但是这个类在使用的时候总是会出现倒计时的偏差,所以只好自##### 己使用 Handler 或者 Timer 来实现。项目中 注册、忘记密码还##### 有现在有出现一个直接拿手机号码配合验证码直接登陆的都用到了验证码倒计时,这是后我们不可能每个类里面都使用 Handler,最直接的就是抽取出来一个,也减少了代码的重复性。我就跟
2016-05-06 23:08:06 371
原创 在 xml 设置的 onClick 属性 为什么有时候点击不起作用呢?
在 xml 文件中“显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法” //activity.findViewById方法进行映射的。 这里由于用到了反射所以我们在项目中要不适用这个属性来设置点击事件。
2016-04-15 17:28:28 740 2
原创 自定义listView 的下拉刷新上拉加载
前两天看了下自定义view的博客,虽说博客写的很详细,但是还是我们可以理解的 ,所以也只好硬着头皮去看,不去看你永远不会,学习本身就是一个积累,不放弃,不抛弃。看了别让人写的下拉刷新上拉加载,看起来也能看懂,可是一到自己真的去实现去敲的时候,还真的是要费一些心思,本来很菜,但是贵在学习吗,不扯了,表演重点,我不会总结,也就是在博客瞎写写,防止以用的时候有时候自己懵逼了 还要到处找,就在这里进行我的点
2016-04-12 18:00:01 399
原创 SwipeRefreshLayout 的简单使用
Android 自带的下拉刷新 SwipeRefreshLayout 控件SwipeRefreshLayout 是 v4 包下的一个刷新控件,它直接继承自 ViewGroup , 也可以说是一个容器,里面可以包括 view 和 xxxlayout ,但是它里面只接受一个,不管是 view 或者是 xxxLayout 只能有其中的一个作为子类。 SwipeRefreshLayout 在 API19 下
2016-04-11 11:45:44 682
原创 使用 CountDownTimer 实现验证码倒计时
CountDownTime 是android给我们提供的一个倒计时的类使用这个类避免了我们在代码里写很多冗余的代码 。源码是这样解说这个类的:在安排的倒计时里,在时间到来为止,随着时间的间隔去有规律的通知。以下就是源码的说明和用例:Schedule a countdown until a time in the future, withregular notifications on inter
2016-04-05 17:14:30 465
原创 Activity 和 Fragment 的交互
FramentLayout 和 RadioGroup 的配合使用 以及 Fragment 和 Activity 之间的通信我们的 app 的整体是一个 Activity ,在 Activity 加载的布局里面我们都是使用 FrameLayout 和 RadioGroup 配合的使用来显示不同数据的展示.但是在使用过程中我们 即可以使用 replace() 来替换界面,也可以使用 FragmentT
2016-03-31 11:48:02 1403 1
原创 android下数据的持久化保存
数据持久化存储有 文件存储(内置存储,外置存储(sd卡)), SharedPreference , 数据库 , 服务器存储. 使用文件 , SharedPreference 或数据库来保存数据会相对更简单些,而且比起将数据保存在 SD 卡中会更加的安全.一 : 文件存储 1,将数据存储到文件中 Context 类中提供了一个openFileOutPut()方法,用于将数据存储到
2016-03-25 14:05:13 456
原创 android如何把Res目录下的一张图片保存到本地
/** * res目录下面的一张图片保存到本地 * @param id 图片的id */private void saveImage(int id) { // getFilesDir().getAbsolutePath()+"/image"\ //在本地创建一个文件夹 File file = new File(getFilesDir().getAbsoluteP
2016-02-26 09:33:50 5829
原创 listView异步加载图片导致图片错位、闪烁、重复的问题的解决
androidListView是android中重要的控件,几乎每一个项目都会用到。但是在使用中我们避免不了会出现一些问题,包括一些滑动事件的处理,例如:ListView中嵌套scrollView,容易出现listView展现数据不全的问题,还有就是listView中我们在加载图片的时候出现图片在加载中出现加载出来的图片出现闪烁,在滑动listView中我们我们都会复用listView的缓存展示下一
2016-02-22 22:05:56 2954
ITelephony和NeighboringCellInfo.zip
2020-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人