1.圆角图片:
也就是一个左右下角带圆角,上方不带圆角的白色背景矩形,而且只有左、右和下边框,颜色为浅灰色。
当然,切一个.9图片作为背景也能实现,但是能用代码实现的还是尽量用代码实现,因为图片过多一个消耗内存,另一个还增加apk大小。
这种效果可以通过layer-lsit来实现,在drawable文件夹下面建一个xml文件,具体代码如下:
1 xml version="1.0" encoding="utf-8"?> 2 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 3 6 7 <item> 8 <shape> 9 <corners android:bottomLeftRadius="5dp" 10 android:bottomRightRadius="5dp" /> 11 <stroke android:width="1px" android:color="@color/line_color" /> 12 shape> 13 item> 14 24 <item android:right="1px" android:left="1px" android:bottom="1px"> 25 <shape> 26 <corners android:bottomLeftRadius="5dp" 27 android:bottomRightRadius="5dp" /> 28 <solid android:color="@color/white" /> 29 shape> 30 item> 31 layer-list>
layer-lsit的用法注释中也讲的比较详细。
然后在View中设置背景为改drawable即可。
当然也可以直接用sharp来实现:
xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"> android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp"/> android:color="#ffffff" /> android:color="#66000000" android:width="1dp"/>
2.两个图片叠加:
3.旋转叠加:
创建drawable xml文件
android:fromDegrees="-10" android:toDegrees="-10">
android:fromDegrees="15" android:toDegrees="15">
android:fromDegrees="35" android:toDegrees="55">
布局文件中添加创建的图片
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/layer_image" />
4.圆形按钮:
xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"> android:shape="oval" > android:color="#ffffff" /> android:width="170dp" android:height="170dp"/> - android:bottom="8dp" android:right="8dp" android:top="8dp" android:left="8dp" >
xmlns:android="http://schemas.android.com/apk/res/android"> - android:state_pressed="true">
android:shape="oval" > android:color="#e66b4f" /> android:width="162dp" android:height="162dp"/> android:shape="oval" > android:color="#f3876f" /> android:width="162dp" android:height="162dp"/>
5.使用layerlist定义seekbar样式(也可定义progressbar,rattingbar样式):
5.1.layerlist中使用图片:
xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"> - android:drawable="@drawable/seekbar_bg" android:id="@android:id/background"/>
- android:id="@android:id/progress" android:drawable="@drawable/seekbar_front"/>
- android:drawable="@drawable/seekbar_front" android:id="@android:id/secondaryProgress"/>
seekbar_front.png如下图:
seekbar_bg.png如下图:
图片没必要这么长的,只要颜色和样子一样即可,这种短图片也会自动根据进度拉长
布局:
xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.zhouyi.layerlisttest.MainActivity"> android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:layout_centerInParent="true" android:progress="40" android:secondaryProgress="70" android:progressDrawable="@drawable/layerlist_seekbar" android:maxHeight="10dp" android:minHeight="10dp" />
maxHeight和minHeight定义为layerlist重最高图片的高度,否则会出现thumb不居中的问题
定义thumb:
selector:
xml version="1.0" encoding="UTF-8"?>xmlns:android="http://schemas.android.com/apk/res/android"> - android:state_pressed="true" android:drawable="@drawable/thumb_dn" />
- android:drawable="@drawable/thumb_up" />
thumb_up.png如下图:
thumb_dn.png如下图:
布局:xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.zhouyi.layerlisttest.MainActivity"> android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:layout_centerInParent="true" android:progress="40" android:secondaryProgress="70" android:progressDrawable="@drawable/layerlist_seekbar" android:thumb="@drawable/sel_seekbarthumb" android:maxHeight="10dp" android:minHeight="10dp" />
效果:
5.2 layerlist中使用sharp:
xml version="1.0" encoding="utf-8"?>后面两个progress对应的item,一定要用clip包裹起来xmlns:android="http://schemas.android.com/apk/res/android"> - android:id="@android:id/background">
android:shape="rectangle"> android:color="@color/colorAccent" /> - android:id="@android:id/progress">
android:shape="rectangle"> android:color="#00ff00" /> - android:id="@android:id/secondaryProgress">
android:shape="rectangle"> android:color="#55000000" />
xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.zhouyi.layerlisttest.MainActivity"> android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:layout_centerInParent="true" android:progress="40" android:secondaryProgress="70" android:progressDrawable="@drawable/layerlist_seekbar" android:thumb="@drawable/sel_seekbarthumb" android:maxHeight="10dp" android:minHeight="10dp" />
也要用max/minheight限定其大小,否则会出现进度条过大的情况