- 博客(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 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关注的人