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>

属性对应如下图:

Material Design 之 Theme_第1张图片

动态取色

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中如何修改CheckBox的颜色
  2. ProgressBar属性小结
  3. android 修改状态栏和标题栏颜色
  4. 改变ScrollView的滚动条的颜色
  5. 00015-相对布局位置属性
  6. 控件属性:
  7. Android 文件读写 + sdcard + 文件的属性

随机推荐

  1. jQuery——将title属性用作悬停的文本,但
  2. 将AngularJS、jQueryUI、Angular-Drag-Dr
  3. 我需要从jquery ajax post中撤回数据并将
  4. scrollTop到溢出滚动div中的活动元素
  5. [入门篇]Jquery读取.Net WebService Json
  6. html页面传值问题已解决
  7. 关于各种js框架的选择
  8. 使用jquery和ajax更新选项列表
  9. 阻止a标签跳转,且将a的get提交方式转化为p
  10. 将字符串数组发布到.net-core mvc