代码库
SkylakeXun
这个作者很懒,什么都没留下…
展开
-
animationDemo
public class AnimationDemo {private static AnimationDemo instance;public static AnimationDemo getInstance(){ if (instance==null){ synchronized (AnimationDemo.class){ if (insta原创 2017-07-30 11:26:34 · 438 阅读 · 0 评论 -
Android's MVP设计模式
MVP的概念MVP是MVC的变种,本质是对MVP设计模式的一种升级。在MVC中Activity即是View也是Controller,耦合度极高,非常不利于项目的管理。这时候MVP就应运而生了。MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Model。 在MVP模式中Activity的功能就是响应生命周期和显示界面,具体其他的工原创 2017-09-26 16:01:58 · 285 阅读 · 0 评论 -
CoordinatorLayout
介绍目前市面上常常能够看到一些很炫的UI效果,比如说,顶部显示一个图片,底部是一个列表,当滚动到顶部时,顶部的图片发生折叠。这种效果需要多个控件进行配合。CoordinatorLayout 是这样一种控件,他能够根据一种机制,协调两个控件的操作。AppBarLayoutAppBarLayout继承自LinearLayout,布局方向为垂直方向。它内部有个机制就是当某个可滚动View的滚动手势发生变原创 2017-11-07 11:28:09 · 245 阅读 · 0 评论 -
Activity跳转的过渡动画全解析
ActivityOptionsCompat前因://在旧版本里面,我们切换Activity大多都是使用的apioverridePendingTransition(enterAnim, exitAnim);但是,这个效果显得太过生硬引出:google在V4 support包内提供了一个向下兼容的类,供我们使用,ActivityOptionsCompat,我们可以使用这个类开发出很绚丽的跳转效果。A原创 2017-11-07 14:40:13 · 504 阅读 · 0 评论 -
自定义控件_自定义日历
public class MydateView extends View { private static final int NUM_COLUMNS = 7; private static final int NUM_ROWS = 6; private Paint mPaint; private int mDayColor = Color.parseColor("#原创 2017-10-30 09:33:34 · 354 阅读 · 0 评论 -
Android常用类的抽取
提示等待的进度条的抽取public class BaseProgressDialog extends Dialog{ //工厂模式 public static BaseProgressDialog newInstance(Context context){ return new BaseProgressDialog(context); } //三个构造器原创 2017-11-08 11:41:08 · 359 阅读 · 0 评论 -
RecyclerView的常用分割线
Grid分割线public class DividerGridItemDecoration extends RecyclerView.ItemDecoration { private static final int[] ATTRS = new int[] { android.R.attr.listDivider }; private Drawable m原创 2017-11-08 11:45:37 · 219 阅读 · 0 评论 -
Android常用工具类
先推荐一款工具类框架http://www.jianshu.com/p/72494773aacecompile 'com.blankj:utilcode:1.9.6'屏幕尺寸相关public class DensityUtils { public static int dip2px(Context context, float dipValue){ final float原创 2017-11-08 15:59:21 · 322 阅读 · 0 评论 -
RxJava入门(一)
什么是RxJavaRx是Reactive Extensions的简写,翻译为响应的扩展。也就是通过由⼀一⽅方发出信息,另⼀一⽅方响应信息并作出处理理的核⼼心框架代码。该框架由微软的架构师Erik Meijer领导的团队开发,并在2012年年11⽉月开源。Rx库⽀支持.NET、JavaScript和C++等,现在已经⽀支持⼏几乎全部的流⾏行行编程语⾔言了了。Rx的⼤大部分语⾔言库由Reacti原创 2017-11-09 14:39:30 · 323 阅读 · 0 评论 -
Rxjava入门(二)
基本使用方法 //被观察者 Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(ObservableEmitter<Integer>原创 2017-11-09 18:05:29 · 225 阅读 · 0 评论 -
观察者模式
什么是观察者模式 * 观察者模式,又叫发布-订阅模式(Publist/Subscribe)模式; * 定义了一种一对多的依赖关系,让多个观察者对象监听某一个主题对象. * 这个主题对象发生变化时,会通知所有的观察者对象,使它们能够自动更新自己观察者模式的组成以及DemoSubject /** * Subject类,主题对象/抽象通知者,一般用一个抽象原创 2017-11-29 11:39:17 · 260 阅读 · 0 评论 -
MaterialDesigner学习笔记
MaterialDesigner介绍Material Design 是一种独一无二的底层系统,在这个系统的基础之上,构建跨平台和超越设备尺寸的统一体验。遵循基本的移动设计定则,同时支持触摸、语音、鼠标、键盘等输入方式特点Material Design 有以下的特点:1. 实体感的操作2. 鲜明、形象的视觉效果3. 有意义的动画效果MaterialDigner样式新增样式@android:s原创 2017-11-06 10:32:31 · 532 阅读 · 0 评论 -
Java常用工具类 Math Collections Random Date Calendar的使用
Math /** * 返回指定数字的绝对值 * @Params int ,long, double,float * @Return int ,long, double,float */ Math.abs(-1);//1 /** * 向上取整 * @P原创 2017-11-16 15:19:57 · 362 阅读 · 0 评论 -
EasyPermission___最简单易用的权限请求框架
引包compile 'pub.devrel:easypermissions:1.0.1'使用方法1.在配置文件中配置权限 <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"原创 2017-12-01 11:03:29 · 2907 阅读 · 3 评论 -
Android工具类 TextUtils使用方法
String str=" "; /**判断一个字符串是否为空(null||length==0),空格返回false * Param:CharSequence * Return:boolean */ String str2="sfsafsafjo"; TextUtils.isEmpty(str);//原创 2017-11-22 11:22:50 · 2901 阅读 · 0 评论 -
WebView的使用
背景经过这么多的发展,目前的android应用开发模式已经有了很多的改变,除了有原来的原生应用开发模式,随着Html5等前端技术的进步,也催生了多种开发模式。比如说目前非常火爆的native+web混合模式,其实就是在开发某个页面的时候,经常会更改,我们就可以使用网页的形式将页面的内容展示,应用使用网页进行交互。本质上来说,还是内嵌了一个网页。这种做法有什么优势呢?1 开发方便,网页开发的成原创 2017-10-16 17:24:00 · 337 阅读 · 0 评论 -
自定义相机
需求:在页面上实时捕捉画面并预览,在nfc打卡校验通过的时候自动拍照;无法通过本地的相机实现该功能,只能自定义了权限 <uses-permission android:name="android.permission.CAMERA"/> //即使没有没有相机这个硬件也可以安装 <uses-feature android:name="android.hardware.camera"原创 2017-09-15 15:39:31 · 335 阅读 · 0 评论 -
Webview中js与本地java代码的互相调用
本地的Html文件保存位置在main目录下,右键new Directory>>命名为assets(注意要加s)将本地的html文件保存到文件夹下保存到其中的txt文件使用如下方法打开InputStream open = getAssets().open("sample.txt");加载本地的网页 private void loadNativeWebHtml() { webV原创 2017-09-05 10:30:09 · 400 阅读 · 0 评论 -
animtorDemo
public class AnimatorDemo {//属性动画,通过调用Get Set方法来真实的控制了一个View的属性值//如果该属性没有get set方法,则可以通过包装类来解决 ->mTargetView.getLayoutParams().width=width;//也可以通过ValueAnimtor的来解决这个问题private static AnimatorDemo inst原创 2017-07-30 11:29:17 · 462 阅读 · 0 评论 -
SurfaceView模版
public class SurfaceViewDemo extends SurfaceView implements Runnable,SurfaceHolder.Callback{//需要三个成员变量SurfaceHolder mHolder;Canvas mCanvas;boolean isDrawing;//需要实现三个构造器public SurfaceViewDemo(Conte原创 2017-07-30 11:32:17 · 271 阅读 · 0 评论 -
自定义Animation
//创建自定义动画//创建Animation的子类public class MyAnimation extends Animation {int mWidth;int mHeight;private Camera mCamera;//有必要的情况下,需要复写initialize()@Overridepublic void initialize(int width, int height原创 2017-07-30 11:51:54 · 295 阅读 · 0 评论 -
SVGDemo
<?xml version="1.0" encoding="utf-8"?><!--指令集:大写为绝对坐标,小写为相对坐标指令和数据间的空格可以忽略同一指令多次出现可以忽略M moveto(M X,Y)L lineto(L X,Y)H horizontal lineto(H X)V vertical lineto(V y)三次贝塞尔C curseto(c xy x2y2 x3y3原创 2017-07-30 11:54:33 · 529 阅读 · 0 评论 -
SVG动画demo
第一步:创建svg对象 <!--设置宽高属性 和网状属性--><vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="200dp" android:height="200dp" android:viewportHeight="100" android:v原创 2017-07-30 11:58:34 · 942 阅读 · 0 评论 -
Android性能优化之布局优化(一)
安卓的页面展示 理想情况下是60帧/s,也就是16ms渲染一次 加入一次绘制任务耗时20ms,那么在16ms系统发出的VSYNC信号时就无法绘制,该帧就被丢弃>>卡顿开发者选项:Profile GPURendering并选中On screen as bars那么将渲染性能以条形图的形式展示 蓝色:DisplayList的时间 红色:OpenGl渲染DisplayList所需要的时间 黄色:原创 2017-07-30 16:52:48 · 362 阅读 · 0 评论 -
Android性能优化之内存优化(二)
内存优化实例bitmap优化1.使用适当分辨率和大小的图片 2.及时回收内存 在使用完bitmap后一定要及时调用bitmap.recycle()来释放内存资源,但android3.0后bitmap被放到heap中,所以就不需要手动进行释放了 3.对图片进行缓存 使用内存缓存(LruCache)和硬盘缓存(DiskLruCache)可以更好的使用bitmap 4.在考虑到需求的情况下,可以原创 2017-07-30 17:52:05 · 247 阅读 · 0 评论 -
MaterialDesign(一)
MaterialDesign主题api21后有三种默认的主题可以设置@android:style/Theme.Material.Dark@android:style/Theme.Material.Light@android:style/Theme.Material.Light.DarkActionBar在style.xml中修改主题<resources><style name="AppThe原创 2017-07-30 21:59:13 · 323 阅读 · 0 评论 -
MaterialDesign(二)
RecyclerView5.0后Google对使用了很久的ListView做了升级,增加了一个使用更方便,效率更高的控件依赖:compile 'com.android.support:recyclerview-v7:25.0.+'adapter:public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter原创 2017-07-31 16:11:53 · 198 阅读 · 0 评论 -
MaterialDesign(三)
Activity过渡动画提供了三种Transition类型的动画进入决定activity中的所有视图怎么出现在屏幕进入效果包括:explode(分解)slide(滑动)fade(淡出)退出决定activity中的所有视图怎么消失在屏幕退出效果:同上进入和退出效果的demo //进入效果 getWindow().setEnterTransition(new Explode())原创 2017-07-31 16:27:48 · 234 阅读 · 0 评论 -
MaterialDesign-Material Design动画效果(四)
Ripple波纹点击效果控件中设置波纹点击效果android:background="?android:selectableItemBackgroundBorderless"//无边界android:background="?android:selectableItemBackground"//以控件大小为边界 <Button android:background="?android原创 2017-07-31 18:05:13 · 301 阅读 · 0 评论 -
MaterialDesign-Toolbar(五)
ToolbarToolbar与actionbar最大的区别就是Toolbar更自由1.添加依赖compile 'com.android.support:appcompat-v7:25.0.+'2.设置主题为noactionbar<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!--Toolbar颜色原创 2017-07-31 21:56:48 · 238 阅读 · 0 评论 -
Android重构(二)
网络底层框架设计AsyncTask public void init2() { //对于网络请求,我们一般定义为GET和POST即可,GET为请求数据,POST为修改数据 /*Request: * GET: http://www.xxx.com/aaa.api?key1=value1&key2=value2 * 以键值对的形式进行原创 2017-08-09 20:09:41 · 280 阅读 · 1 评论 -
AsyncTaskDemo
异步任务,是Handler的简化版,不需要实现多个方法; 本质上依然是由Handler实现,其内部封装了一个简单的线程池 但也因此不建议进行叫复杂的耗时操作如网络请求等创建一个内部类继承于AsyncTaskpublic class MainActivity extends AppCompatActivity { private TextView tv; MyAsyncTask t原创 2017-09-04 16:34:46 · 256 阅读 · 0 评论 -
Android线程池的简单使用
使用线程池的优点1.实现了对线程的复用,减少的资源的开销2.节省了开启线程时损耗的时间,提高了app的流畅性3.能对线程进行管理,如并发数和任务的停止线程池参数介绍new ThreadPoolExecutor( //核心线程数,除非allowCoreThreadTimeOut被设置为true,否则它闲着也不会死 int corePoolSize, //最大线程数,活动线程数量超过它原创 2017-09-04 17:47:14 · 284 阅读 · 0 评论 -
开源项目阅读
仿网易云音乐https://github.com/aa112901/remusicRecyclerView多重itemType public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { final static int FIRST_ITEM = 0;...原创 2017-11-07 16:58:19 · 3164 阅读 · 1 评论