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>

    <!-- 定制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这个类中提取以下突出的颜色:

需要配置gradle compile '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());

        }






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值