今天突然找到这样一个问题: “Handler的postDelayed会阻塞线程吗?”。基于自己之前对于Handler的线程间通讯机制的理解,还是不能给出明确的答案。正好打算把一篇关于主线程的工作原理的文章写出来,顺带看下能否把这个问题从源码的角度解释清楚。 more >>
认识Theme和Styles
重新看一遍Using Themes and styles without going crazy,大部分属于直接翻译
<View android:background= "#ff0000" />
变成
<View style= "@Style/MyStyle" />
<Style name = "MyStyle">
<item name = "android:background">#ff0000</item>
</Style>
这种形式,对于大量的具有相同属性的且具有共性的View,可以直接使用对应的Style,这能够让layout文件更加整洁。前提是确信layout文件中使用的View具有相同的属性。
more >>Google I/O 2016上的What’s new in Android介绍的比较全面,MultiWindow、Notification、ConstraintLayout等都比较简单。这里拎出来开发者不得不注意的几点来介绍。
more >>
Lollipop开始引入了新的Activity Transition动画效果,比起常用的overridePendingTransaction() 效果要强大许多
测试环境
supportLibVersion = “24.2.1”
gradle plugin version : “classpath ‘com.android.tools.build:gradle:2.2.0’”
gradle version : 3.1
compileSdkVersion 24
buildToolsVersion “24.0.2”
android:foreground=”?android:attr/selectableItemBackground”
或是
android:background=”?android:attr/selectableItemBackground”
这个xml属性最早是我学着写recyclerVeiw的item xml的时候接触到的,简单来说就是,在API 21及以上,用户点击这个itemView时候会出现一个Ripple效果
非常好看,而在API 21以下则会表现为MonoChrome的类似按压色的效果
而这个点击时的水波纹颜色也是可以Customize的
<item name="android:colorControlHighlight">@color/my_ripple_color</item>
//这个要写在自己的Activity的Theme(style-v21)里,注意,当前Activity的Theme必须继承自Appcompat!!
于是,我写了这样的xml
<LinearLayout
android:id="@+id/item_root"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:orientation="vertical"
android:gravity="center"
android:onClick="@{(view) -> callback.onClick(view,data)}"
android:elevation="2dp"
android:background="@color/md_amber_200"
android:foreground="?android:attr/selectableItemBackground"
/>
然而,点击之后并没有出现水波纹(模拟器 API 21),换成CardView或是将foreground改为background之后才有效。查了很多博客,最后得出结论:
android:foreground在API 23之前只对FrameLayout有效(CardView继承自FrameLayout当然有效)。
more >>
Yigit Boyar 在2015年的android Dev summit上介绍了Databinding,当时好像提到一句:
“no binding libraries will be created from now on “,大意如此。
本文介绍使用Databinding替代ButterKnife的用法
通常我们在一个class里面写内部类时,不是一定要用static声明为静态类,但是推荐作为内部静态类,因为内部类会隐式持有外部类的引用,有些时候如果代码处理不对容易造成内存泄漏
下面就是个内存泄漏的例子
more >>
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true