- 博客(21)
- 收藏
- 关注
原创 安卓开发艺术探索笔记第一章
1 Activity的生命周期全面分析onPause必须先执行完,新Activity的onResume才会执行,所以onPause不能执行耗时操作。如果新Activity采用了透明主题,那么当前Activity不会回调onStop;onSaveInstanceState只会在Activity被异常终止的情况下才会调用,时间是在onStop之前,可能在onPause之前,也可能之后。
2017-08-26 15:22:51
257
原创 探究View.post获取View宽高问题
1 提出问题:执行View.post()的时候,此时View是开始被measure?还是在measure之前执行?如果在measure之前执行,而post又没有进行延时,那么这个runnable又是如何被放到测量之后进行的呢?首先跟踪post源码:分析:如果mAttachInfo不为Null的时候,会执行1;否则执行2;所以现在需要知道View中mAttachInf
2017-08-02 14:06:44
477
原创 从源码角度理解postInvalidate和Invalidate
1 postInvalidate()方法在非UI线程中调用,通知UI线程重绘。2 Invalidate()方法在UI线程中调用,重绘当前UI。首先打开源码:postInvalidate()方法源码解释如下:在下一个事件循环中通知重绘,在非UI线程中使用它去重绘。我们继续追踪下去,最后会进入ViewRootImpl的dispatchInvalidateDelayed()方
2017-07-28 09:34:18
328
原创 获取文字宽高
1 String text = "Android";Rect rect = new Rect();mPaint.getTextBounds(text, 0, text.length(), rect);int width = rect.width();//文本的宽度int height = rect.height();//文本的高度
2017-07-13 17:57:48
517
原创 2017-2-21
1 换肤功能compile project(':skin-support')compile project(':skin-support-design')点击按钮实现换肤findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() { @Override public void o
2017-02-21 14:44:18
179
原创 2017-02-17
1 安卓取消默认动画Intent intent=new Intent(JpushNoticeActivity.this,JpushNoticeActivity.class);startActivity(intent);overridePendingTransition(0,0);//在这个参数中直接传0,代表没有动画。finish();
2017-02-17 09:08:51
146
原创 2017-02-17
1 安卓取消默认动画Intent intent=new Intent(JpushNoticeActivity.this,JpushNoticeActivity.class);startActivity(intent);overridePendingTransition(0,0); 在这个方法中直接传为空。finish();
2017-02-17 09:04:48
166
原创 2017-02-09
1 android stdio工程下的两个Moudle的libs下的同一个jar包只有一个出现三角下拉符号。2 记得application初始化一定要加上这句android:name=".MyApplication"。
2017-02-09 14:20:18
207
原创 子线程新建Handler为什么会报错?——浅谈Handler,Looper,Message之间的关系
引言:很多人都知道不能再在子线程new一个Handler,android会报错,至于为什么会报错,并没有作深入的研究,今天一起来研究一下,顺手学习下android异步消息处理机制的问题。在子线程中new 一个Handler为什么会出错?首先直接在子线程新建一个Handler?new Thread(new Runnable() { @Override pu
2017-01-20 10:25:58
522
原创 12-5
1 Android stdio导入项目一直卡在build gradle project info。AndroidStudio导入项目一直卡在Building gradle project info,实际上是因为你导入的这个项目使用的gradle与你已经拥有的gradle版本不一致,导致需要下载该项目需要的gradle版本,不知是被墙了还是什么原因,反正就是会一直卡住,直至下载完成(如
2016-12-05 15:40:49
227
原创 12-1
1 在导入项目到Android studio后,若编译出现“AAPT err(Facade for): libpng error: Not a PNG file”错误。 该错误表示项目中的drawable下的图片文件有非png图片,命名为了png造成的。解决方案: 方案一、在模块下的build.gradle中配置下面两个信息,再clear pro
2016-12-01 14:46:44
174
原创 11-8
1 刷新效果package com.example.myapplication;import android.content.Context;import android.graphics.drawable.AnimationDrawable;import android.os.Handler;import android.util.AttributeSet;impo
2016-11-08 18:13:50
180
原创 11-3
1 安卓Palette的使用 参考 :http://www.ithao123.cn/content-10619199.html注:要使用Palette需要android-support-v7-palette.jar这个jar包,如果没有请更新SDK,更新后在…\sdk
2016-11-03 15:49:41
189
原创 10-28
第一步设置MainActivity的加载模式为singleTask android:launchMode="singleTask"第二步重写onNewIntent()方法 private static final String TAG_EXIT = "exit"; @Override protected void onNewIntent(Intent
2016-10-28 17:24:17
183
原创 10-21
1 SwipeToLoadLayout 定制刷新效果repositories { maven { url "https://jitpack.io" } } compile 'com.github.Aspsine:SwipeToLoadLayout:1.0.3'然后就使用 xmlns:android="http://schema
2016-10-21 17:55:18
253
原创 10-8
1 制作圆形图片compile 'com.mostafagazar:customshapeimageview:1.0.4'com.meg7.widget.CustomShapeImageView android:layout_width="164dp" android:layout_height="164dp" android:src="@drawabl
2016-10-08 15:06:19
234
原创 9-29
1 静态变量传参在广播接收者里将private List> datalists数据传到activity中去,setDataList("tanlin",datalits);//采用gson可以传递任何对象,public void setDataList(String tag,List> datalist) { if (null == datalist|| datalis
2016-09-29 18:35:43
165
原创 2016-9-19
Manifest merger failed with multiple errors, see ?1 Error:Execution failed for task ':app:processDebugManifest'.> Manifest merger failed with multiple errors, see logs原因是导入的库在build.grad
2016-09-19 17:41:59
333
原创 注册登录验证码
1 判断是不是手机号public boolean isMobileNO(String mobiles) {Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$");Matcher m = p.matcher(mobiles);return m.matches();}2 判断密码格式是否
2016-09-14 15:50:38
363
原创 MD风格
1 安卓沉浸式状态栏if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); getWindow().addFlags(WindowManager.LayoutPar
2016-09-07 10:50:07
1759
原创 2016-9-1
1 使用百度地图时 java.lang.UnsatisfiedLinkError: Couldn't load easemobservice from loader dalvik.system.PathClassLoad解决方案: 在libs下面创建一个armeabi-v7a文件夹 把armeabi *.so的文件复制一份 放在armea
2016-09-01 10:14:14
147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人