利用ShapeDrawable自定义控件的shape

简介: MainActivity如下: package cn.testshape;import android.os.Bundle;import android.

MainActivity如下:

package cn.testshape;
import android.os.Bundle;
import android.app.Activity;
/**
 * Demo描述:
 * 利用ShapeDrawable(xml形式)自定义控件的shape
 */
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

}


main.xml如下:

<RelativeLayout 
    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"
    >

    <Button
        android:layout_width="250dip"
        android:layout_height="50dip"
        android:text="测试自定义shape的使用" 
        android:background="@drawable/background_selector"
        android:textColor="@drawable/textcolor_selector"
        android:layout_centerInParent="true"
        android:gravity="center"
      />

</RelativeLayout>


 


background_selector.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:drawable="@drawable/pressed_shape" android:state_pressed="true"/>
     <item android:drawable="@drawable/default_shape"/>
</selector>


default_shape.xml如下:

<?xml version="1.0" encoding="utf-8"?>
    <!-- 定义矩形rectangle -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle" >
    <!-- 定义边框颜色 -->
    <solid android:color="#d1d1d1" />
    <!-- 定义圆角弧度 -->
    <corners
        android:bottomLeftRadius="4dp"
        android:bottomRightRadius="4dp"
        android:topLeftRadius="4dp"
        android:topRightRadius="4dp" 
    />

</shape>


pressed_shape.xml如下:

<?xml version="1.0" encoding="utf-8"?>
    <!-- 定义矩形rectangle -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle" >
    <!-- 定义边框颜色 -->
    <solid android:color="#7bb3f8" />
    <!-- 定义圆角弧度 -->
    <corners
        android:bottomLeftRadius="4dp"
        android:bottomRightRadius="4dp"
        android:topLeftRadius="4dp"
        android:topRightRadius="4dp" 
    />

</shape>


textcolor_selector.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
      <item android:color="#ffffff" android:state_pressed="true"/>
      <item android:color="#000000"/>
</selector>

 

相关文章
|
2月前
|
数据可视化 C# Windows
不可不知的WPF形状(Shape)
【9月更文挑战第5天】在 WPF(Windows Presentation Foundation)中,形状(Shape)用于创建图形元素,如矩形、椭圆、直线、多边形和折线等。形状具有多种属性,如 Fill(填充颜色)、Stroke(边框颜色)、StrokeThickness(边框粗细)和 Opacity(不透明度)。此外,还可以对形状应用变换,如平移、旋转和缩放,并处理鼠标事件等交互。这些功能使得 WPF 能够实现复杂且灵活的图形设计与用户界面效果。
|
Swift
SwiftUI极简教程32:使用Shape形状和Animation动画创建一个圆形进度条
SwiftUI极简教程32:使用Shape形状和Animation动画创建一个圆形进度条
796 0
SwiftUI极简教程32:使用Shape形状和Animation动画创建一个圆形进度条
Qt 在控件上面绘图 label,pushbutton。。。。。
最近有点时间,就研究研究Qt ,提升一下自己
252 0
Qt 在控件上面绘图 label,pushbutton。。。。。
|
C#
WPF开发-Label自定义背景-Decorator
首先在App.xaml文件当中添加样式和模板
2032 0
|
C#
[UWP]不怎么实用的Shape指南:自定义Shape
原文:[UWP]不怎么实用的Shape指南:自定义Shape 1. 前言 这篇文章介绍了继承并自定义Shape的方法,不过,恐怕,事实上,100个xaml的程序员99个都不会用到。写出来是因为反正都学了,当作写个笔记。
741 0
|
C# 容器
[UWP]实用的Shape指南
原文:[UWP]实用的Shape指南 在UWP UI系统中,使用Shape是绘制2D图形最简单的方式,小到图标,大到图表都用到Shape的派生类,可以说有举足轻重的地位。幸运的是从Silverlight以来Shape基本没有什么大改动,简直是UWP中的一股清流。
839 0
|
API C# Windows
[UWP]用Shape做动画
原文:[UWP]用Shape做动画 相对于WPF/Silverlight,UWP的动画系统可以说有大幅提高,不过本文无意深入讨论这些动画API,本文将介绍使用Shape做一些进度、等待方面的动画,除此之外也会介绍一些相关技巧。
779 0
|
C# API 开发者
[UWP]用Shape做动画(2):使用与扩展PointAnimation
原文:[UWP]用Shape做动画(2):使用与扩展PointAnimation 上一篇几乎都在说DoubleAnimation的应用,这篇说说PointAnimation。 1. 使用PointAnimation 使用PointAnimation可以让Shape变形,但实际上没看到多少人会这么用,毕竟WPF做的软件多数不需要这么花俏。
923 0
|
C#
WPF之复杂形状控件
原文:WPF之复杂形状控件 有的时候想将一张图片变成一个按钮。当然这里不是单纯讲图片作为按钮的背景。 这两者是有区别的: 前者图片即按钮,比如你有一个空心的圆圈,当你点击中间空心部分的时候是没有任何反应的因为它不是属于按钮的一部分; 后者图片仅仅是背景,你有一个空心的圆圈图片做背景,点击空心部分的时候就还是有反应,因为按钮的实际区域是一个方形。
1323 0
|
C#
WPF 3D model - Sphere, Cone, and Cylinder
原文:WPF 3D model - Sphere, Cone, and Cylinder   Extending Visual3D - Sphere, Cone, and Cylinder http://blogs.
1074 0