欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 设置主题实现点击波纹效果的示例

程序员文章站 2024-02-09 18:43:16
开头先说说大家都知道的material design。 material design: material design是google推出的一个全新的设计语言,它的...

开头先说说大家都知道的material design。

material design:

material design是google推出的一个全新的设计语言,它的特点就是拟物扁平化。

material design包含了很多内容,我大致把它分为四部分:

  1. 主题和布局
  2. 视图和阴影
  3. ui控件
  4. 动画

material theme

使用material主题:

material主题只能应用在android l版本。

应用material主题很简单,只需要修改res/values/styles.xml文件,使其继承android:theme.material。如下:

<!-- res/values/styles.xml --> 
<resources> 
 <!-- your app's theme inherits from the material theme --> 
 <style name="apptheme" parent="android:theme.material"> 
  <!-- theme customizations --> 
 </style> 
</resources> 

或者在androidmanifest.xml中直接设置主题:

android:theme="@android:style/theme.material.light" 

在最新的5.0中,google似乎不推荐使用material design主题了,而是由appcompat代替。

<resources> 
 
  <!-- base application theme. --> 
  <style name="apptheme" parent="theme.appcompat.light.darkactionbar"> 
    <!-- customize your theme here. --> 
    <item name="colorprimary">@color/colorprimary</item> 
    <item name="colorprimarydark">@color/colorprimarydark</item> 
    <item name="coloraccent">@color/coloraccent</item> 
  </style> 
 
</resources> 

自定义状态条和导航条:

material还允许你轻松的自定义状态条和导航条的颜色。

可以使用如下属性(参考下方图片):

android:statusbarcolor,window.setstatusbarcolor

Android 设置主题实现点击波纹效果的示例

兼容性:

由于material theme只可以在android l developer preview中使用。

所以在低版本使用的话就需要为其另设一套主题:

在老版本使用一套主题 res/values/styles.xml,在新版本使用material主题res/values-v21/styles.xml.

系统自带点击事件的控件一般都具有默认的波纹效果,直接使用即可:

<relativelayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        > 
 
        <button 
          android:id="@+id/mybtn" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:drawablepadding="10dp" 
          android:gravity="center_vertical" 
          android:paddingbottom="15dip" 
          android:paddingleft="15dip" 
          android:paddingright="25dip" 
          android:paddingtop="15dip" 
          android:text="click" 
          android:textcolor="@color/common_black_text" 
          android:textsize="16sp" /> 
      </relativelayout> 

怎么为view添加点击波纹效果呢,先了解下面的东西。

触摸反馈:

在android l5.0中加入了触摸反馈动画。

其中最明显,最具代表性的就是波纹动画,比如当点击按钮时会从点击的位置产生类似于波纹的扩散效果。

波纹效果(ripple):

当你使用了material主题后,波纹动画会自动应用在所有的控件上,我们当然可以来设置其属性来调整到我们需要的效果。

可以通过如下代码设置波纹的背景:

android:background="?android:attr/selectableitembackground"波纹有边界
android:background="?android:attr/selectableitembackgroundborderless"波纹超出边界

使用效果如下:

b1是不设任何背景的按钮

b2设置了?android:attr/selectableitembackground

b3设置了?android:attr/selectableitembackgroundborderless

Android 设置主题实现点击波纹效果的示例

设置颜色

我们也可以通过设置xml属性来调节动画颜色,从而可以适应不同的主题:

android:colorcontrolhighlight:设置波纹颜色

android:coloraccent:设置checkbox等控件的选中颜色

比如下面这个比较粉嫩的主题,就需要修改动画颜色来匹配(上面已经有介绍):

Android 设置主题实现点击波纹效果的示例

为view添加波纹效果:

<relativelayout 
        android:id="@+id/user_info_layout" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:clickable="true" 
        android:background="?android:attr/selectableitembackground" 
        android:layout_margintop="10dp" 
        android:paddingbottom="15dip" 
        android:paddingtop="15dip"> 
 
        <textview 
          android:id="@+id/user_info_text" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:drawablepadding="10dp" 
          android:gravity="center_vertical" 
          android:paddingleft="15dip" 
          android:paddingright="25dip" 
          android:text="我的资料" 
          android:textsize="16sp" /> 
 
        <imageview 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:layout_alignparentright="true" 
          android:layout_centerinparent="true" 
          android:contentdescription="@null" 
          android:paddingright="15dip" 
           /> 
      </relativelayout> 

为textview添加波纹效果:

<linearlayout 
        android:layout_width="match_parent" 
        android:layout_height="68dp" 
        android:weightsum="4" 
        android:gravity="center_vertical"> 
 
        <textview 
          android:id="@+id/user_unpaid" 
          android:layout_width="0dp" 
          android:layout_height="wrap_content" 
          android:background="?android:attr/selectableitembackgroundborderless" 
          android:drawabletop="@mipmap/ic_user_paid" 
          android:drawablepadding="5dp" 
          android:gravity="center" 
          android:layout_weight="1" 
          android:text="待付款" 
          android:textsize="12sp" 
          android:clickable="true"/> 
        <textview 
          android:id="@+id/user_paid" 
          android:layout_width="0dp" 
          android:layout_height="wrap_content" 
          android:background="?android:attr/selectableitembackgroundborderless" 
          android:drawabletop="@mipmap/ic_user_paid" 
          android:drawablepadding="5dp" 
          android:layout_weight="1" 
          android:gravity="center" 
          android:text="待发货" 
          android:textcolor="@color/common_black_text" 
          android:textsize="12sp" 
          android:clickable="true"/> 
        <textview 
          android:id="@+id/user_unreceived" 
          android:layout_width="0dp" 
          android:layout_height="wrap_content" 
          android:background="?android:attr/selectableitembackgroundborderless" 
          android:drawabletop="@mipmap/ic_user_paid" 
          android:drawablepadding="5dp" 
          android:gravity="center" 
          android:layout_weight="1" 
          android:text="待收货" 
          android:textcolor="@color/common_black_text" 
          android:textsize="12sp" 
          android:clickable="true"/> 
        <textview 
          android:id="@+id/user_completed" 
          android:layout_width="0dp" 
          android:layout_height="wrap_content" 
          android:background="?android:attr/selectableitembackgroundborderless" 
          android:drawabletop="@mipmap/ic_user_paid" 
          android:drawablepadding="5dp" 
          android:gravity="center" 
          android:layout_weight="1" 
          android:text="已完成" 
          android:textsize="12sp" 
          android:clickable="true"/> 
 
      </linearlayout> 

这样就可以实现波纹效果啦!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。