自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 beginDelayedTransition用法

要改变某个控件的位置,可以用修改布局参数后setLayoutParams,如果想给这个过程加上动画效果,则可以在父节点上调用TransitionManager.beginDelayedTransitionprivate void changePosition() { TransitionManager.beginDelayedTransition(viewRoot);

2016-08-17 10:36:50 3980

转载 RecyclerView中的item的match_parent属性失效问题解决方案

解决方案:    1.  item使用RelativeLayout布局,并且布局中的view至少有一个layout_alignParentRight=true    2. 在adapte中的onCreateViewHolder,使用  [html] view plain copypublic ViewHolder onCr

2016-08-17 10:36:04 1314

原创 java方法引用

方法参数和返回值与Lambda表达式相同时, 使用方法名代替.Observable.from(mManyWords).observeOn(AndroidSchedulers.mainThread()).reduce(this::merge).subscribe(this::showToast);private String merge(String s,

2016-08-17 10:35:40 605

原创 android:elevation无效

android5.0 引入了Z轴的概念,于是就有着这种风格,也就是目前比较火的Material Design。1. android:elevation 设置该组件“浮”起来的高度,to难过过设置该属性可以让该组件呈现3D效果。2. android:translationZ  设置该组件在Z方向(垂直屏幕方向)上的位移。默认情况下,阴影是由background提供的,如果

2016-08-17 10:34:34 13102 1

原创 AppBarLayout

AppBarLayout 是继承LinerLayout实现的一个ViewGroup容器组件,它是为了Material Design设计的App Bar,支持手势滑动操作。默认的AppBarLayout是垂直方向的,它的作用是把AppBarLayout包裹的内容都作为AppBar。注意: AppBarLayout必须作为Toolbar的父布局容器我们需要定义AppBarL

2016-08-17 10:34:06 622

原创 android点击波纹效果

1  列表android:background="?android:selectableItemBackground"2  按钮android:background="?android:attr/selectableItemBackground" (有界波纹)android:background="?android:attr/selectableItemBackgroundBo

2016-08-17 10:33:42 368

原创 Android 6.0动态权限管理

1.这个新的运行时权限仅当我们设置targetSdkVersion to 23(这意味着你已经在23上测试通过了)才起作用,当然还要是M系统的手机。app在6.0之前的设备依然使用旧的权限系统。如果app的targetSdkVersion 低于 23,那将被认为app没有用23新权限测试过,那将被继续使用旧有规则:用户在安装的时候不得不接受所有权限,安装后app就有了那些权限!然后ap

2016-08-17 10:33:20 397

转载 onSaveInstanceState() 和 onRestoreInstanceState()方法

onSaveInstanceState()方法的调用时机:(1)、当用户按下HOME键时。  这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,因此系统会调用onSaveInstanceState(),让用户有机会保存某些非永久性的数据。以下几种情况的分析都遵循该原则(2)、长按HOME键,选择运行其他的程序时

2016-08-17 10:32:53 227

转载 StatFs类 获取系统/sdcard存储空间信息

1. 判断 SDCard 是否存在,并且是否具有可读写权限     staticpublicboolean isExternalStorageAvailable() {     return Environment.getExternalStorageState().equals(             Environment.MEDIA_MOUNTED);

2016-08-17 10:32:31 721

原创 动态刷新桌面图标

需求;桌面上的日历图标,显示当天的日期和星期几实现:      当前手表没有调节时间的功能,是通过与手机蓝牙连接后,同步手机的时间。      手表桌面监听  ACTION_TIME_TICK  和  ACTION_TIME_CHANGED 广播     ACTION_TIME_TICK是系统每分钟发的广播     ACTION_TIME_CHANGED是当蓝牙重新连接或手机时

2016-08-17 10:31:59 368

原创 Android Transition

Android Transition Framework可以实现三种效果:不同Activity之间切换时,Activityc的内容(contentView)转场动画不同Activity之间切换时,如果使用了Shared Element动画,也可以使用Transition FrameWork来实现不同的过渡动画效果同一个Activity内View变化的过渡动画(Scene)

2016-08-17 10:31:28 272

原创 CollapsingToolbarLayout

CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout,给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端)。<

2016-08-17 10:31:08 305

原创 后台启动Activity

问题:定时器界面A    定时提醒界面BA正在运行,按HOME键被切换到后台,这时时间到了,应该启动B界面,这时在桌面再次点击定时器图标,则B界面再也不出现。从log中,发现启动B界面的请求被忽略了06-22 17:31:21.897 I/ActivityManager(  664): START u0 {flg=0x10000000 cmp=com.mobvoi.ticwear.ti

2016-08-17 10:30:51 8953

原创 Android截图方法

View组件显示的内容可以通过cache机制保存为bitmap, 主要有以下方法:void  setDrawingCacheEnabled(boolean flag), Bitmap  getDrawingCache(boolean autoScale), void  buildDrawingCache(boolean autoScale

2016-08-17 10:30:21 387

原创 adb赋予和撤销权限

adb shell pm grant com.eg.android.AlipayGphone android.permission.READ_EXTERNAL_STORAGEadb shell pm revoke com.eg.android.AlipayGphone android.permission.READ_EXTERNAL_STORAGE

2016-08-17 10:30:05 9069 1

原创 map和flatmap

map: 对数据做转换,转换后的类型,会在subscribe里面使用。如果转换后的是个observable类型,怎么办?Observable.just("1").map(new Func1() {    @Override    public String[] call(String s) {        return new String[]{"2","3"};    }

2016-08-17 10:29:30 1300

转载 Android使用Fragment的setUserVisibleHint方法实现延时加载

大家开发Android的APP的时候,应该都是用过Fragment。 Fragment使用起来非常方便,灵活。在ViewPage中PageAdapter来管理所有的Fragment即可。       但是大家都会遇到一个问题,就是在加载一个Fragment的时候,会自动缓存左右几个(默认是一个)页面,此时也会调用到正常的生命周期函数,onCreate,onCrateView,onResume.

2016-08-17 10:29:03 1829 1

原创 黑客与画家---设计者的品味

如果你是一个设计师,并且你不承认有一种人们共同如果品味只是一种个人偏好,那么每个人都是完美无缺的,你喜欢自己的看上的东西,那就足够了。

2016-08-17 10:28:27 458

原创 shared element

步骤:设置Window Content Transition属性style name="MaterialAnimations" parent="@style/Theme.AppCompat.Light.NoActionBar"> ... item name="android:windowContentTransitions">true</item ...s

2016-08-17 10:28:02 433

原创 延迟5分钟执行任务

需求:当前的Activity,按HOME键切换到后台,如果5分钟都不再使用,则清理资源实现方式:1    如果要清理的只是界面上控件的状态,那么,可以在界面切换到后台时,记录下时间。当界面再次打开时,判断当前时间与刚才记录的时间间隔,如果大于5分钟,则清理控件的状态。2   如果要清理的不只是控件的状态,比如当Activity切换到后台时,生成一个通知,那么5分钟后不操作,要清除这个通

2016-08-17 10:27:37 1775

原创 Android系统无法进入休眠

从log中发现,是由于dialer持有weaklock导致的。更详细的原因如下:来电界面新增了延迟5s亮屏响铃需求,这样当程序qid

2016-05-30 20:23:37 1960

原创 Android开发总结

1 不要把所有的语言资源都放到strings.xml里,按照模块来划分,比如登录模块的资源,放到strings_account.xml2 静态内部类会持有外部类对象的引用。如果在Activity内部创建了一个handler的内部类,则会持有Activity的引用,而message对象会持有handler的引用,所以当Activity已结束但message还存在的时候,则有message->ha

2016-05-23 09:46:48 218

转载 Android view坐标系

event.getX:  触摸点相对于控件左边缘的距离event.getRawX:触摸点相对于屏幕左边缘的距离view.getX:view控件左边缘相对于父控件左边缘的距离,值是动态变化的,相当与left+translationXview.getLeft:view控件左边缘相对于父控件左边缘的距离,view显示后值不变

2016-05-23 09:46:21 236

原创 手表连接状态

与android配对    peerConnected代表蓝牙连接状态(包含推送和语音)与iphone配对         mfi表           companionConnected 代表推送连接状态  peerConnected代表语音连接状态         非mfi表  companionConnected 代表推送连接状态 peerConnected不能使用,语

2016-05-23 09:45:01 460

原创 git分支管理

master分支:开发功能debug分支:提供给测试的分支release分支:发布版本的分支

2016-05-23 09:39:51 211

转载 git bisect快速定位版本的错误

git-bisect - Find by binary search the change that introduced a bug用于通过二分查找来查寻版本的错误,一般用于大工程使用方法,是设定前后两个版本,一个为good, 一个为bad, 使用二分查找中间的版本,进行编译,看是否出现问题,如果没有,在该版本与之前设定的bad之间再进行二分;如果有错误,则在该版本与

2016-05-21 21:20:36 310

转载 git rebase

1  如何修改很早以前的commit信息?首先要git rebase到需要修改message的那个commit的前1个commit。假设commit id是32e0a87f,运行下面的git rebase命令:git rebase -i 32e0a87f在git bash中运行上面的命令后,会弹出编辑框,在编辑框中会分行依次显示以pick开头的这个commit之后的所有commit

2016-05-21 16:58:05 426

原创 Android系统休眠导致的严重问题

最新实现了一个需求:来电时,弹出来电界面,但是不亮屏,延迟5s后亮屏,播放来电铃声。但是遇到一个问题: 当来电时超过5s后,也不亮屏和播放铃声,只要再点击屏幕亮屏,就会马上出现来电界面。通过log查看,handler的延迟任务根本没执行,由此想到是系统休眠导致的问题。    为了节省电量,系统在空闲时会进入休眠状态,这时thread、handler什么的都会停止。解决方法有两个:1)用Alar

2016-05-19 22:54:31 935

转载 Snackbar

Snackbar是design support library中另一个组件,使用Snackbar我们可以在屏幕底部(大多时候)快速弹出消息,它和Toast非常相似,但是它更灵活一些。当它显示一段时间后或用户与屏幕交互时它会自动消失。可以自定义action-可选操作。swiping it off the screen可以让FAB消失它是context sensitive message(自己

2016-05-15 20:45:24 258

原创 Android多进程导致的问题

由于Dialer包含两个进程,会有以下问题:1   Application会执行两次,要注意2   Phone进程无法调用ContactManager查询通讯录信息

2016-05-09 19:43:33 566

转载 Android固定屏幕

屏幕固定是android 5.0 上的新功能 其Api介绍如下:我说一点比较重要的吧,就是开了屏幕固定以后,通知栏和状态栏会隐藏,home键和recent键会失效(单独按会失效),然后还不准启动其他activity。就是说 你只能在这个应用内部干事情。比如你吧手机借给别人的时候就可以用这个功能 。开启屏幕固定ActivityManagerNative.getDefaul

2016-05-08 23:07:56 1190

转载 git生成patch文件

1  使用git format-patch生成所需要的patch:当前分支所有超前master的提交:git format-patch -M master某次提交以后的所有patch:git format-patch 4e16                --4e16指的是commit名从根到指定提交的所有patch:git format-patch

2016-05-08 23:03:03 1024

转载 反编译Apk中Manifest文件

在apk中的AndroidManifest.xml是经过压缩的,可以通过“AXMLPrinter2”工具解开,具体命令为: java -jar AXMLPrinter2.jar AndroidManifest.xml

2016-03-13 23:53:41 1253

原创 log开关控制

对于代码中的log,可以用BuildConfig中的变量来控制输出。buildTypes {release {buildConfigField "boolean", "LOG_DEBUG", "false" proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-ru

2016-03-10 10:39:07 2110

转载 android edittext 点击回车会响应两次的解决方案

现象:在搜索框输入内容,点击键盘里的“搜索”,发现edittext的事件响应了两次。原因:由于Key有Down和Up事件,所以会执行两次。修改方法:增加条件判断,只处理ACTION_DOWNsearchEditText.setOnKeyListener(new OnKeyListener() {    @Override    public boolean onKey(

2016-03-07 16:52:56 1179

转载 ACTION_DOWN 和ACTION_POINTER_DOWN区别

Android thinks about touch events in terms of gestures. A gesture in this sense includes all events from the first finger that touches the screen to the last finger that leaves the screen. A single ge

2016-03-03 14:34:58 5686

转载 onInterceptTouchEvent onTouchEvent

1. Android的View是一块绘图区域。2. ViewGroup是View的子类,用来把下级的View分组;ViewGroup是各种Layout的父类。3. 如果View1包含View2,我们则说View1是View2的Parent View,View2是View1的Chile View.4. ViewGroup才有OnInterceptTouchEvent,对Down事件起个拦

2016-02-18 00:13:52 205

原创 积极地工作

这半年主要开发智能手表中的电话app,涉及的东西很多,出现了几次严重的问题,对自己的工作方式也有了一些思考。作为一个开发人员,当你手中有未开发完的需求,而bug系统中又有20多个未解决的bug,是一种什么体验?我当时的做法只是关注于需求开发,bug仅仅浏览了一下,简单的顺手改了,困难的就先不管了。当项目组开会的时候,组长会质问那些bug进展到什么情况了,我说还没看,大家肯定就崩溃了。

2016-01-26 22:41:27 265

原创 又要留在北京过年了

本来打算回家过年的,由于某些原因,不得不留着北京过年了。再过两周,北京就将成为一座空城,你将看到难得一见的寂静的北京。找点乐子吧,计划找一天去奥森跑步,找一天绕着三环骑一圈(将近100公里,是个挑战),剩下的,就是陪孩子玩了。     2015年的两件大事:换工作和健身。换工作是在5月份,在外企实在是没什么意思,很难接触到核心技术,还处处被老外防着,索性换了一家创业型做人工智能的公司,so f

2016-01-26 22:18:41 364

原创 黑客与画家

第七章 关注贫富差距三个原因使得我们对赚钱另眼相看。第一,我们从小被误导的对财富的看法。 第二,历史上积累财富的方式大多名声不好。 第三,担心收入差距拉大将对社会产生不利影响。觉得收入不公平,是认为财富就是从某个口子流出来,被大家分享的东西,而不是来源于满足他人的需求创造活动。那么当你注意到有些人赚钱比其他人多得多时,你就会不偏不倚地得出“不公平”这个结论。很多人对财富分化不满意的第二

2016-01-24 20:11:04 481

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除