- 博客(56)
- 问答 (1)
- 收藏
- 关注
原创 Java协变、逆变、类型擦除。列表优先于数组
什么是协变、逆变、类型擦除。假设F(X)代表Java中的一种代码模式,其中X为此模式中可变的部分。如果B是A的派生类,而F(B)也享受F(A)派生类的待遇,那么F模式是协变的,如果F(A)反过来享受F(B)派生类的待遇,那么F模式是逆变的。如果F(A)和F(B)之间不享受任何继承待遇,那么F模式是不变的。总结:是否享受继承待遇:数组 Object[] = Apple[] 协变某个...
2019-02-26 16:28:17
222
原创 Kotlin基础
一、 函数与变量函数1. 函数特征 fun 关键字 参数声明 如: arg1:Int, arg2:Array<String> 函数不一定要放在类中,可以放在文件的最外层 数组也是类 有些方法可以简化,如 println 可以直接使用 可以省略末尾的分好 返回值同参数声明,同类字段声明都是冒号隔开 函数体是单个表达式的可以省略花括号 可以推出来
2017-11-06 17:18:21
401
原创 Android Support Library
com.android.support:support-annotations:23.1.1Nullness注解 Nullable 作用于函数参数或者返回值,标记参数或者返回值可以为空。 NonNull 作用于函数参数或者返回值,标记参数或者返回值不可以为空。如果违反,会出现警告 资源类型注解 AnyRes: 标记整型值是 任何一种资源类型 AnimatorRes:
2017-05-03 16:13:18
731
1
原创 各种常用第三方包地址
各种资源 开源项目 https://github.com/kHRYSTAL/AndroidStarArchive/tree/master/app RxJava https://github.com/ReactiveX/RxJava RxAndroid https://github.com/ReactiveX/RxAndroid RxLifecycle h
2017-04-26 10:52:51
826
原创 android:singleLine ="true" 过时
android:singleLine =”true” 过时,会导致莫名其妙的错误。 解决方法: android:lines=”1”
2017-04-24 15:01:38
1737
原创 Dialog 和 Popup Window 的区别
AlertDialog是非阻塞式对话框,而PopupWindow是阻塞式对话框 AlertDialog弹出时,后台还可以做事情;而PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。这两种区别的表现是:AlertDialog弹出时,背景是黑色的,但是当我们点击背景,Aler
2017-04-07 09:44:51
1741
原创 Glide 使用
/** * 使用glide下载图片 glide 默认缓存 * Created by wangyy on 2017/3/22. */public class ImageLoaderUtils { /*gif 图片也可以使用 但gif 不能放在圆形控件里面*/ public static void loadImageFromUri(Context context, String
2017-03-22 14:18:40
337
原创 View的事件分发机制复习
MotionEvent 所谓点击事件的事件分发,其实就是对MotionEvent事件的分发过程。即当一个MotionEvent产生了以后,系统需要把这个事件传递给一个具体的View,而这个传递的过程就是分发过程。三个重要方法public boolean dispatchTouchEvent(MotionEvent ev) 用来进行事件的分发。如果事件能够传递给当前View,就一定会调用这个
2016-10-10 16:21:32
331
原创 Android 经典框架收集
网络请求Retrofit + RxAndroid 优点: 以接口/注解的形式定义请求和响应Square 开源的项目. 是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO to JSON,网络请求(POST,GET,PUT,DELETE等)封装。 本身
2016-10-09 10:58:39
479
原创 Android知识点复习整理
Thread、MessageQueue、Message、Looper、Handler关系及需要注意的地方Android任何一个Thread中都跟着一个Looper,Looper提供了MessageQueue。只要Thread拥有MessageQueue,别的线程就可以往其中添加Message。Looper.prepare(),Looper.loop(),Looper.release(). 如果不
2016-09-26 17:09:20
1744
转载 Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题
同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65536个(DEX 64K problem),进而导致dex无法生成,也就无法生成APK文件。解决办法如下:1、谷歌官方已经给出了相关的文档,参照网上搜索的资料,首先,我的问题是: 复制代码Error:Execution failed for task ‘:duchazhushou:dexRelease’. co
2016-06-23 17:18:04
537
转载 设计模式(全)
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池
2016-06-23 17:16:43
511
10
原创 ReactNative 安装步骤
1、 JDK安装、环境变量配置 2、 Android SDK 安装 build tools 版本必须严格匹配23.0.1、环境变量配置 3、 Git 安装 4、 Python 必须为2.7.X 版本 5、 Node.js 安装 npm 版本必须为3.+ 6、 建议设置npm镜像以加速后面的过程(或使用科学上网工具)。 npm config set registry htt
2016-06-13 14:50:02
462
原创 AOP(面向切面编程 Aspect Oriented Programming)
AOP(面向切面编程 Aspect Oriented Programming)概念(百度百科)通过 预编译方式和运行期动态代理 实现 程序功能 的 统一维护 的一种技术。特点:低耦合,高聚合。 AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。OOP与AOP
2016-06-12 10:01:16
4919
原创 代理 及 注解
代理(Proxy)Proxy代理类的理解:在系统程序设计中,有时需要面对无法确定接口,却需要构造对象的情况。通过代理类,能够在不额外创建Java文件的情况下构造对象及调用该对象方法。(系统程序设计用得较多,应用程序设计遇到的情况比较少)代理类可以在运行时创建全新的类,这样的代理类能够实现指定的接口,尤其是,它具有下列方法: 指定接口所需要的全部方法。 Object类中的全部方法,例如:
2016-06-02 16:17:07
1058
转载 不同的启动方式,应用启动多次的Bug解决
http://blog.youkuaiyun.com/busjb/article/details/40891239 * 我们需要判断:该意图是打开一个新的任务,还是将后台的应用给提到前台来. * 若是要将应用提到前台来直接将这个Activity结束掉,然后显示出来的Activity就是之前被最小化的Activity. * 因为点击图标的意图会将新启动的Activ
2015-12-04 17:10:38
867
原创 Android 绘制渐变梯形,其他图形同理
// LinearGradient 第一个参数第二个参数为 起始位置x,y 三四参数为终点位置x,y。 // 如果x不变则为y轴渐变, y不变则为x轴渐变 // 第五个参数为颜色渐变,此处为红色渐变为绿色 // 第七个参数为渐变次数,可repeat Shader mShader=new LinearGradient(0, 500, 0, 0,
2015-11-09 15:16:37
6881
原创 Matrix 简介
Matrix 在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵图片的处理分为四个基本类型:Translate 平移变换Scale 缩放变换Rotate 旋转变换Skew 错切变换图片变换的三种操作方式set(用于设置Matrix中的值)post(后乘,根据矩阵的原理,相当于左乘)pre(先乘,相当于矩阵中的右乘) 默认时,这四种变换
2015-11-03 16:44:39
891
转载 Android 简单特殊知识点
Android 简单特殊知识点View变灰色, 即实现灰度视图// 获取当前activity 的根ViewgetWindow().getDecorView().findViewById(android.R.id.content) // true 为灰, false 为正常 public void setGreyscale(View v, boolean greyscale) {
2015-11-02 15:03:16
599
转载 RxJava 各种操作符(2、3)
RxJava 各种操作符(2) - Transforming Observables buffer, FlatMap, GroupBy, Map, Scan, Windowbufferbuffer操作符周期性地收集源Observable产生的结果到列表中,并把这个列表提交给订阅者,订阅者处理后,清空buffer列表,同时接收下一次收集的结果并提交给订阅者,周而复始。一旦源Observabl
2015-10-29 18:14:38
1449
转载 RxJava 各种操作符(1)
RxJava 各种操作符(1) - Creating Observables Create, Defer, Empty/Never/Throw, From, Interval, Just, Range, Repeat, Start, and TimerCreatecreate操作符是所有创建型操作符的“根”,也就是说其他创建型操作符最后都是通过create操作符来创建Observable的.
2015-10-27 15:17:36
2822
原创 常用viewpager动画效果实现
/** * position参数指明给定页面相对于屏幕中心的位置。它是一个动态属性,会随着页面的滚动而改变。当一个页面填充整个屏幕是,它的值是0, * 当一个页面刚刚离开屏幕的右边时 * ,它的值是1。当两个也页面分别滚动到一半时,其中一个页面的位置是-0.5,另一个页面的位置是0.5。基于屏幕上页面的位置 * ,通过使用诸如setAlpha * ()、setTranslationX()、
2015-10-23 14:14:51
434
转载 编程经验之考虑使用静态工厂方法
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0922/3494.htmlhttps://medium.com/@orhanobut/consider-static-factory-method-8c0d4eaa5e73安卓中的基本问题之一就是对键/值对的持有。因为bundle 需要键/值对,所以你
2015-10-10 17:25:40
623
原创 单立模式 Java
单立模式 - 确保一个类只有一个实例,并提供全局访问点一:同步getInstance方法缺点:如果频繁调用getInstance,同步会导致代码执行效率下降100倍,而且当uniqueInstance已经被实例化的时候,同步显得累赘。public class Singleton{ private static Singleton uniqueInstance; private S
2015-09-24 10:31:10
489
原创 终于找到了不用自定义一个activity栈,来关闭所有activity的方法了!!!
直接上代码!!!Intent intent = new Intent(this, LoginActivity.class);ComponentName cn = intent.getComponent();Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);startActivity(mainIntent);可能很早就有了。
2015-08-13 18:00:59
1332
转载 RecyclerView 动画 (添加、删除动画 以及 加载item 时的动画)
github地址: https://github.com/wasabeef/recyclerview-animators感谢作者。
2015-08-04 15:40:58
7244
原创 Volley全解析
什么是VolleyVolley 的单词涵义是:迸发、万箭齐发。 是比喻的命名方式,寓指网络请求并发效率高。Volley 的重要方法mQueue = Volley.newRequestQueue(context); public static RequestQueue newRequestQueue(Context context, HttpStack stack) {
2015-07-22 11:00:16
496
转载 Android中Bitmap和Drawable [转]
一、相关概念1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象2、Canvas画布,绘图的目的区域,用于绘图3、Bitmap位图,用于图的处理4、Matrix矩阵二、Bitmap 1、从资源中获取Bitmap Java代码
2015-07-08 15:42:07
309
转载 Android studio gradle配置 【转】
Gradle 基本概念首先我们学习几个gradle 的脚本语法,掌握了这几个语法,你就能非常简单的用gradle构建打包android项目了。 首先,我们来看下一个最简单android build.gradle。build.gradle //设置脚本的运行环境 buildscript { //支持java 依赖库管理(maven/ivy),用于项目的依赖。
2015-07-02 11:53:01
534
转载 Comparable与Comparator的区别
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。Comparator位于包java.util下,而Comparable位于包
2015-06-24 14:52:04
364
原创 Core Java 学习(三) - 继承设计技巧
继承设计技巧公共操作和域放在超类不要使用 protected 的域使用继承实现 is - a 关系除非所有的继承的方法都有意义,否则不要使用继承在覆盖方法时,不要改变预期的行为使用多态,而非类型信息不要过多地使用反射
2015-06-24 14:17:32
449
转载 android studio 目录结构
build:构建目录,相当于Eclipse中默认Java工程的bin目录。libs:依赖包src: main - java Java代码 - res 资源文件 - - layout App布局及界面元素配置 - - menu App菜单配置 - - values - - - dimens.xm
2015-06-18 11:24:05
375
原创 Core Java 笔记(三) - 反射
Class类 - 运行时的类型标记Class 对象表示一个特定类的属性Student student;Class cl = student.getClass();getName() 获取类名Student student;Class cl = student.getClass();String name = cl.getName();Class 的静态方法 forName() 获得类
2015-06-18 11:21:46
444
空空如也
小米 notifydatasetchanged 的速度跟不上手滑的速度 怎么处理?
2015-06-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人