Android利用shape实现各种简单的形状

 更新时间:2017年05月26日 11:57:27   作者:ROOM先生  
这篇文章主要给大家介绍了关于Android中利用shape实现各种简单的形状的相关资料,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面跟着小编一起来学习学习吧。

一,概述

我们在android开发中经常要用到图片,而一些简单的图片我们完全可以用shape形状drawable资源代替,使用shape有一个好处就是可以减小我们apk的大小,因为同样的效果,shape比图片更节省空间,好了,我们废话不多说,下面进入正题。

二,shape初识

shape是android drawable资源中的一个重要的角色,drawable资源覆盖面广,它不仅代表图片,它可以是一个颜色,一个形状,因为shape其简单实用,下面我们来看一下shape形状的分类:

ectangle:

rectangle代表者矩形,它是shape默认的形状类型,即如果我们不在shape的android:shape属性指定其类型时,默认是矩形,用它我们可以画一个矩形,圆角矩形,具体在下面会说道

oval:

ovel,椭圆,用它可以画椭圆,圆

line:

水平线,在使用该形状的时候,我们得给它指定stroke元素指定其宽度,不然在使用该形状的时候会报空指针异常

ring:

环形

下面我们来用上面说道的各种形状画图形,打造各种简单的形状

三,shape的使用

下面看看用shape画的一些简单的图形,之后我会按照图形说一下shape的各种属性以及一些要注意的问题:


1.实心长方形

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <!-- 设置固定填充色 -->
 <solid android:color="#f00" />

 <size android:width="60dp" android:height="30dp"/>

</shape>

2.炫彩实心长方形

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="rectangle">
 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置渐变填充色 -->
 <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"></gradient>
</shape>

3.长方形外框

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置描边 -->
 <stroke android:width="2dp" android:color="#f00" ></stroke>

</shape>

4.虚线长方形外框

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置描边 -->
 <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke>
</shape>

5.椭圆虚线外框

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置描边 -->
 <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke>

 <corners android:radius="15dp"/>
</shape>

6.实心长方体切圆角

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <!-- 设置固定填充色 -->
 <solid android:color="#f00" />

 <size android:width="60dp" android:height="30dp"/>

 <corners android:radius="10dp"/>

</shape>

7.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="rectangle">
 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置渐变填充色 -->
 <gradient android:startColor="#f00" android:centerColor="#0f0" android:endColor="#00f" android:gradientRadius="60"
 android:type="radial"></gradient>
</shape>

8.

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置描边 -->
 <stroke android:width="2dp" android:color="#f00" ></stroke>

 <corners android:radius="15dp"/>
</shape>

9.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 >
 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置渐变填充色 -->
 <gradient android:startColor="#f00" android:centerColor="#0f0" android:endColor="#00f"
 android:type="sweep"></gradient>
</shape>

10.

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置描边 -->
 <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke>

 <corners android:radius="15dp" android:topRightRadius="0dp" android:bottomRightRadius="0dp"/>
</shape>

11.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="oval">
 <!-- 设置固定填充色 -->
 <solid android:color="#f00" />

 <size android:width="60dp" android:height="30dp"/>

</shape>

12.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="oval">
 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置渐变色 -->
 <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"></gradient>
</shape>

13.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="oval">
 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置描边色 -->
 <stroke android:width="2dp" android:color="#f00" ></stroke>

</shape>

14.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="oval">
 <size android:width="60dp" android:height="30dp"/>

 <!-- 设置渐变填充色 -->
 <gradient android:startColor="#f00" android:centerColor="#0f0" android:endColor="#00f" android:gradientRadius="60"
 android:type="sweep"></gradient>
</shape>

15.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="oval">

 <size android:width="60dp" android:height="30dp"/>
 <!-- 设置描边色 -->
 <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke>
</shape>

16.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:innerRadius="20dp"
 android:shape="ring"
 android:thickness="2dp"
 android:useLevel="false" >

 <!-- 设置固定填充色 -->
 <solid android:color="#f00" />

 <size
 android:height="44dp"
 />

</shape>

17.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:innerRadius="20dp"
 android:shape="ring"
 android:thickness="2dp"
 android:useLevel="false" >

 <!-- 设置渐变填充色 -->
 <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"/>

 <size
 android:height="44dp"
 />

</shape>

18.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:innerRadius="20dp"
 android:shape="ring"
 android:thickness="2dp"
 android:useLevel="false" >

 <!-- 设置渐变填充色 -->
 <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"/>

 <size
 android:height="44dp"
 />

 <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"/>

</shape>

19.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:innerRadius="20dp"
 android:shape="ring"
 android:thickness="2dp"
 android:useLevel="false" >
 <size
 android:height="44dp"
 />

 <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"/>

</shape>

20.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:innerRadius="20dp"
 android:shape="ring"
 android:innerRadiusRatio="8"
 android:useLevel="false" >

 <!-- 设置渐变填充色 -->
 <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"/>

 <size
 android:height="44dp"
 />
</shape>

21.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="line">

 <stroke android:width="1dp" android:color="#f00"/>

 <size android:height="2dp"></size>
</shape>

22.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="line">

 <stroke android:width="1dp" android:color="#f00"/>

 <size android:height="10dp"></size>
</shape>

23.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="line" >

 <stroke
 android:dashGap="8px"
 android:dashWidth="8px"
 android:width="1dp"
 android:color="#f00" />

 <size android:height="30dip" />

</shape>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Android自定义PopupWindow仿点击弹出分享功能

    Android自定义PopupWindow仿点击弹出分享功能

    这篇文章主要为大家详细介绍了Android自定义PopupWindow仿点击弹出分享功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 基于DownloadManager的简单下载器编写小结

    基于DownloadManager的简单下载器编写小结

    Android自带的DownloadManager是一个很好的下载文件的工具。该类在API level 9之后出现,它已经帮我们处理了下载失败、重新下载等功能,整个下载过程全部交给系统负责,不需要我们过多的处理,非常的nice。关键的是用起来也很简单,稍微封装一下就可以几句话搞定下载
    2017-12-12
  • Android学习教程之下拉刷新实现代码(11)

    Android学习教程之下拉刷新实现代码(11)

    这篇文章主要为大家详细介绍了Android学习教程之下拉刷新实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 使用Retrofit下载文件并实现进度监听的示例

    使用Retrofit下载文件并实现进度监听的示例

    这篇文章主要介绍了使用Retrofit下载文件并实现进度监听的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Android性能测试关注的指标整理

    Android性能测试关注的指标整理

    在本篇文章里小编给各位整理的是关于Android性能测试关注的指标整理内容,有兴趣的朋友们学习下。
    2019-10-10
  • Android 6.0动态权限申请教程

    Android 6.0动态权限申请教程

    本文主要介绍了Android 6.0动态权限申请的教程,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • Android自定义View实现数独游戏

    Android自定义View实现数独游戏

    这篇文章主要为大家详细介绍了Android自定义View实现数独游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android编程实现webview执行loadUrl时隐藏键盘的workround效果

    Android编程实现webview执行loadUrl时隐藏键盘的workround效果

    这篇文章主要介绍了Android编程实现webview执行loadUrl时隐藏键盘的workround效果,较为详细的分析了执行loadUrl时隐藏键盘的workround具体步骤与两种实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android录音并且输出为Mp4文件的方法教程

    Android录音并且输出为Mp4文件的方法教程

    这篇文章主要给大家介绍了关于Android录音并且输出为Mp4文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • C/C++在Java、Android和Objective-C三大平台下实现混合编程

    C/C++在Java、Android和Objective-C三大平台下实现混合编程

    本文主要介绍C/C++在Java、Android和Objective-C三大平台下实现混合编程,这里举例说明实现不同平台用C/C++实现编程的方法,有兴趣的小伙伴可以参考下
    2016-08-08

最新评论