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>

<!--定制actionbartitle的样式,颜色,大小-->

<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 themeActionBar必须是引用自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());

}






更多相关文章

  1. Android--利用selector设置Button
  2. Android中如何修改CheckBox的颜色
  3. 【Android】UI-shape的使用
  4. android 修改状态栏和标题栏颜色
  5. ProgressBar属性小结
  6. Android(安卓)Studio 错误 Duplicate files copied in APK META-
  7. 改变ScrollView的滚动条的颜色
  8. Android快速入门-----数据存储(三)Sqlite应用练习:增删查改案例练习
  9. 仿照利用android系统源码资源文件,修改SeekBar颜色 前景与背景

随机推荐

  1. Android 动态logo bootanimation.zip 制
  2. 【EditText】Android设置EditText不可编
  3. View动画
  4. Android(安卓)一个简单的自定义WheelView
  5. Android 圆角图片,基于Glide4.9 的 Bitmap
  6. android app 启动会白屏的解决办法
  7. 【Android】TextView常用属性
  8. Android之TableLayout布局
  9. Android中attrs.xml文件的使用详解
  10. Android截屏浅析