Material Design 之 Theme
material的主题定义为如下形式:
@android:style/Theme.Material (dark version)
@android:style/Theme.Material.Light (light version)
@android:style/Theme.Material.Light.DarkActionBar
与之对应的Compat theme:
Theme.AppCompat
Theme.AppCompat.Light
Theme.AppCompat.Light.DarkActionBar
当类继承自Activity时,使用的都是material的主题,然后定制一些属性:
<style name="AppTheme" parent="@android:style/Theme.Material.Light">
<!--定制状态栏的颜色-->
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<!--定制actionbar的样式-->
<item name="android:actionBarStyle">@style/myActionBarStyle</item>
</style>
<style name="myActionBarStyle" parent="android:Widget.ActionBar">
<!--定制actionbar的背景色-->
<item name="android:background">@color/colorPrimary</item>
<!--定制actionbar上title的样式,颜色,大小-->
<item name="android:titleTextStyle">@style/textStyle</item>
<!--控制显示 返回键|LOGO|title-->
<item name="android:displayOptions">homeAsUp|showHome|showTitle</item>
<!--控制显示LOGO-->
<item name="android:icon">@android:color/transparent</item>
<!--定制返回键图标-->
<item name="android:homeAsUpIndicator">@android:drawable/ic_delete</item>
</style>
<style name="textStyle">
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">18sp</item>
</style>
当继承自AppCompatActivity时,使用的都是Compat theme,ActionBar必须是引用自v7包,使用getSupportActionBar(),否则返回为null,去定制Color Palette(调色板),重点有以下几个属性:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!--对应ActionBar的颜色-->
<item name="colorPrimary">@color/colorPrimary</item>
<!--对应状态栏的颜色-->
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<!--对应EditText编辑时、RadioButton选中、CheckBox等选中时的颜色-->
<item name="colorAccent">@color/colorAccent</item>
</style>
属性对应如下图:
动态取色
Palette这个类中提取以下突出的颜色:
需要配置gradlecompile 'com.android.support:palette-v7:22.2.0'
Vibrant(有活力)
Vibrant dark(有活力暗色)
Vibrant light(有活力亮色)
Muted(柔和)
Muted dark(柔和暗色)
Muted light(柔和亮色)
//目标bitmap,代码片段
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.kale);
Palette palette = Palette.generate(bm);
if (palette.getLightVibrantSwatch() != null) {
//得到不同的样本,设置给imageview进行显示
iv.setBackgroundColor(palette.getLightVibrantSwatch().getRgb());
iv1.setBackgroundColor(palette.getDarkVibrantSwatch().getRgb());
iv2.setBackgroundColor(palette.getLightMutedSwatch().getRgb());
iv3.setBackgroundColor(palette.getDarkMutedSwatch().getRgb());
}
更多相关文章
- Android中如何修改CheckBox的颜色
- ProgressBar属性小结
- android 修改状态栏和标题栏颜色
- 改变ScrollView的滚动条的颜色
- 00015-相对布局位置属性
- 控件属性:
- Android 文件读写 + sdcard + 文件的属性