- 博客(28)
- 资源 (3)
- 收藏
- 关注
原创 安卓 踩过的坑 -17.03.29
踩过的坑 1 . 调试手机为小米5s ,用Android studio 2.3调度程序时提示 “Installationfailed with message Failed to establish session”错误,需要在在开发者选项里 关闭MIUI优化!2.在studio预览layout时,提示 "Couldn't resolve resource @id/item1"
2017-04-10 11:19:34
382
原创 使用 Freeline 纪录篇
首先上Freeline github地址 Freeline是由蚂蚁聚宝Android团队开发的一款针对Android平台的增量编译工具。它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。原理就不介绍了,感兴趣可以自行查找。使用:只需三步一.配置project-level的build.gradle,加
2016-12-07 09:16:46
991
原创 Android设计模式~~~工厂方法模式
一.工厂方法模式介绍是创建设计模式之一。二. 定义定义一个用于创建对象的接口,让子类决定实例化那个类。三. 使用场景在任何需要生成复杂对象的地方,都可以使用工厂模式。四. 简单的例子抽象的产品类public abstract class Product { public abstract void method();}具体的产品类Apublic cl
2016-12-05 10:43:35
285
原创 在用studio导入一个项目长时间 build 解决办法
进入到要导入项目的 \gradle\wrapper 中,修改 使用 记事本打开,修改修改成一个你能打开的项目 版本 。这时你就应该能打开了,但是还是不能运行,那是因为项目里面的 gradle 版本不对,所以要再收到修改一下,版本 这样就该大功告成,究其原因,就是版本不符,下载有下载不下来,所以卡住不动!(下载需到墙外,,,,,)
2016-11-03 10:42:12
1618
原创 Android 获取 View 的宽和高
在开发中我们经常需要获取一个View的快和高,但是经常获取到的都是0,这是因为View 还么有测量好,我们就已经去获取宽和高了,所以获取到的就是0这个默认值。那么我们怎么获取到真正的宽和高呢?下面介绍三种常用的方法,以及区别。方法一. 使用onWindowFocusChanged() ; 当窗口获取到焦点时,这时View 就已经初始化好了,所以这是在获取宽和高就行了。例如: @O
2016-10-10 10:10:37
316
原创 Android 消息传递机制详解
一 .介绍 : Handler 是 android 消息机制的上层“接口”,一般情况下我们只需要和 Handler 进行交互即可。在什么情况下我们使用消息传递呢? 例如,在子线程中进行操作(网络请求 , 复杂的计算 , 复杂的数据库操作 等等),然后需要根据在子线程中的结果来相应的更新UI ,那么这时就需要使用 Handler 在UI线程中更新界面。(Android 不允许在子线程中更新或修改U
2016-09-29 10:36:24
422
原创 Android 绘制圆角图片的几种方式
Android 绘制圆角图片的几种方式:一.使用PorterDuffXfermode PorterDuffXfermode : 是设置两个图层交集区域的显示方式,所以我们可以这样想:一个圆与一个图片的共同区域,我们让它显示出来,OK ! 使用如下代码:public static Bitmap CirCreateBitmap(Context context,int test) {
2016-09-28 15:13:14
1806
原创 Android 5.0 新特性 水波纹
一. 水波纹的使用很简单: 因为水波纹是5.0才加入的新特性,所以只有在ApI 21 或者以上才可以使用,或者使用第三方库。在res目录下新建一个drawable-21 ,再新建一个ripple_bg.xml文件,命名随便:<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:
2016-09-28 13:05:04
307
原创 Android 6.0 权限管理 实例
Android 6.0 对权限有打的变动!分为普通权限(和以前一样,不需运行时检查)危险权限 PROTECTION_NORMAL类权限 当用户安装或更新应用时,系统将授予应用所请求的属于 PROTECTION_NORMAL 的所有权限(安装时授权的一类基本权限)。这类权限包括:android.permission.ACCESS_LOCATION_
2016-09-27 09:53:06
242
原创 Android 自定义View 适配wrap_content 和 padding 模板
Android 自定义View 适配wrap_content 和 padding 模板/** * 绘制 自定义View的 wrap_content 可做模板 * @param widthMeasureSpec * @param heightMeasureSpec */ @Override protected void onMeas
2016-09-26 17:31:35
902
原创 View事件冲突 外部解决 模板写法
(父容器 解决滑动冲突 )典型写法: @Override public boolean onInterceptTouchEvent(MotionEvent ev) { boolean inter = false; int x = (int) ev.getX(); int y = (int) ev.getY(); swit
2016-09-26 15:05:31
287
原创 Android 使用Scroller 实现渐变式滑动
Scroller 实现渐变式滑动是固定写法:如下 :mScroller = new Scroller(mContext); /** * 滑动内容 而不是整个ViewGrope * 渐进式滑动 * @param destX * @param destY */ private void smoothScrollToMy(int
2016-09-26 13:57:42
1013
原创 Android 滑动关闭Activity 示例
先看效果图 :要用到的 知识点 :1. 滑动处理 2.滑动冲突处理 3.设置Activity的主题 4. 位移动画 5. 滑动的监听 明显可以看出,它是一个ViewGrope , 而且肯定是在能看到的视图最上层.(不然滑动过去了,背景不是透明的)。那么让它继承 RelativeLayout 并重写其构造方
2016-09-26 11:33:17
432
原创 Android中的IPC方式
一. IPC全称Inter-Process Communication ,进程间通信。IPC 的具体方式有很多,比如可以通过Intent,共享文件,还可以采用Binder方式来夸进程访问,此外,通过网络通信也可以实现数据传递,所以Socket也可以实现IPC 。上述各个方式都有较大的差别。二. 具体方式:2.1 使用Bundle :我们知道四大组件中的三大组件(Activity , S
2016-09-20 16:56:15
346
原创 Android 解耦方法 ~~~ 事件总线
一.它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使我们的代码更加简洁,耦合性更低,提升了我们的代码质量。二.设计模式:观察者模式。三.使用场景:你是否在开发的过程中遇到过从Activity-A跳转到Activity-B,然后需要在Activity-B处理完某些工作之后回调Activity-A中的某个函数,但Activity又不
2016-09-17 13:03:06
1610
原创 Android设计模式~~~责任链模式
一.责任链模式介绍:使多个对象都有机会处理请求,从而避免了请求发送者和接收者之间的耦合关系,将这些对象连成一条链,并联着这条链传递该请求,知道有对象处理它为止。二.使用场景:对个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定。三.例子:public abstract class Leader { /** * 上一级了领导者 */ p
2016-09-11 14:07:16
258
原创 Android设计模式 ~~~ 原型模式
一.原型模式的定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。二.原型模式的使用分类:1.浅拷贝:这种拷贝不是将原始对象的所有字段重新构造一份,而是副本对象引用原始对象的字段。2.深拷贝:将原始对象的所有字段都重新构造一份。三.使用方式:1> 模型通过实现Cloneable接口2> 重写clone方法(注意:clone()是继承自Object
2016-08-31 20:42:21
263
原创 Andriod 动画机制及使用~~~属性动画
属性动画Animator框架是在Android 3.0 之后,谷歌加入的.在Animator框架中使用最多的就是AnimatorSet 和 ObjectAnimator 配合使用,ObjectAnimator 可以精细的控制一个对象的某一个属性,而可以使用多个 ObjectAnimator , 组合到 AnimatorSet 中形成组合动画。其中最重要的是:属性动画是通过调用属性的 get
2016-07-23 08:00:56
344
原创 Andriod 动画机制及使用~~~视图动画
一.View 动画它提供了AlphaAnimation , RotateAnimation , TranslateAnimation , ScaleAnimation 四种动画方式,并提供AnimationSet动画集合,可以混合使用多种动画。View动画非常常用,但是有个非常大的缺点—— 不具有交互性 .当一个控件在视图上移动了,但是其响应位置还在原来的位置! 所以它只能做一些避免交互的
2016-07-22 21:11:17
268
原创 Android绘图技巧练习之~~~~画表练习
Canvas作为绘图的直接对象提供了几个非常有用的方法。下面先介绍一下,然后再来练习。1.Canvas.save(); 保存画布,大概功能就是将之前所有绘制的的图型保存起来。2.Canvas.restore(); 这个方法是进行图像合并操作。将我们在save();之前的图像与之后的图像进行合并。3.Canvas.translate(); Canvas.rotate(); 从字面
2016-07-22 10:22:52
409
原创 Android绘图基础之 ~~~ 在XML中绘图
XML不仅能能实现布局,同样也可以绘制图形。其中有几个常用的API我们来介绍一下; Shape , Layer , Selector 1. Shape : 通过Shape我们可以绘制各种形状,下面我们来介绍具体属性<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="r
2016-07-21 09:16:16
416
原创 Android 2D绘图基础
系统通过Canvas 对象来提供各种绘图方法,有绘制 点 ,线,长方形,圆,扇形,文字等... 、通过字面意思Canvas是画布的意思,那么画布有,还缺了画笔---Paint,有了画布,画笔,那么就可以开始画图了! Paint 可以直接new出来,并设置一些属性 mPaint = new Paint(); // 创建画笔 mPaint.
2016-07-20 10:55:59
288
原创 Activity的四种启动模式
活动的启动模式有四种,分别为 standard , singleTop ,singleTask 和 singleInstance 。我们可以在AndroidManifest.xml 文件中进行启动模式的选着。例如: <activity android:name=".MainActivity" android:launchMode
2016-07-19 09:58:21
220
原创 Activity生命周期回调
Activity 类中定义了七个回调,覆盖了生命周期的每个环节。1. onCreate();这个方法是在活动第一次创建时调用。几乎所有活动都会调用 @Override public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.on
2016-07-19 09:47:33
428
原创 使用LayoutInflater 获取View对象的方式
LayoutInflater 是动态加载视图方式加载方式有是个重载方法:1. public View inflate(int resource, ViewGroup root)2. public View inflate(int resource, ViewGroup root, boolean attachToRoot)3.public View inflat
2016-07-18 15:06:00
1445
原创 安卓studio 新建项目时,出现包冲突错误时 ---- 解决办法
安卓studio 新建项目时,出现包冲突错误时 ---- 解决办法错误如下Error:Execution failed for task ':v4v7testdemo:transformClassesWithDexForDebug'.> com.android.ide.common.process.ProcessException: org.gradle.process.internal.E
2016-06-23 13:36:30
604
原创 studio 链接手机 不能选中当前运行程序----解决方法
直接上图 看 出现的问题 : 连接手机了 程序可以正常运行,但是就不能选中正在运行的程序!!解决办法:看图OK了!看结果
2016-06-23 09:42:05
540
原创 SectionIndexer解析与使用 联系人侧边栏
一.SectionIndexer 是一个接口 有三个方法需要实现 1>. 返回一个数组 可以通过拿到adapter对象拿到这个数组 Object[] getSections(); 2> 通过上面数组第几个 来获取ListView的位置 int getPositionForSection(int sectionIndex); 3>通过listView的位置
2016-06-22 09:48:08
3856
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人