Android shape和selector 结合使用实例代码

shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector。可以这样说,shape和selector在美化控件中的作用是至关重要的。

1.Shape

简介

作用:XML中定义的几何形状

位置:res/drawable/文件的名称.xml

使用的方法:

Java代码中:R.drawable.文件的名称

XML中:android:background="@drawable/文件的名称"

属性:

<shape>  android:shape=["rectangle" | "oval" | "line" | "ring"]

其中rectagle矩形,oval椭圆,line水平直线,ring环形

<shape>中子节点的常用属性:

<gradient>  渐变

android:startColor  起始颜色

android:endColor  结束颜色

android:angle  渐变角度,0从上到下,90表示从左到右,数值为45的整数倍默认为0;

android:type  渐变的样式 liner线性渐变 radial环形渐变 sweep

<solid >  填充

android:color  填充的颜色

<stroke > 描边

android:width 描边的宽度

android:color 描边的颜色

android:dashWidth 表示'-'横线的宽度

android:dashGap 表示'-'横线之间的距离

<corners > 圆角

android:radius  圆角的半径 值越大角越圆

android:topRightRadius  右上圆角半径

android:bottomLeftRadius 右下圆角角半径

android:topLeftRadius 左上圆角半径

android:bottomRightRadius 左下圆角半径

 2.Selector

简介

位置:res/drawable/文件的名称.xml

使用的方法:

Java代码中:R.drawable.文件的名称

XML中:android:background="@drawable/文件的名称"

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景图片-->
<item android:drawable="@drawable/pic1" /> 

<!-- 没有焦点时的背景图片 -->
<item
 android:state_window_focused="false"
 android:drawable="@drawable/pic_blue"
 /> 

<!-- 非触摸模式下获得焦点并单击时的背景图片 -->
<item
 android:state_focused="true"
 android:state_pressed="true"
 android:drawable= "@drawable/pic_red"
 /> 

<!-- 触摸模式下单击时的背景图片-->
<item
 android:state_focused="false"
 android:state_pressed="true"
 android:drawable="@drawable/pic_pink"
 /> 

<!--选中时的图片背景-->
<item
 android:state_selected="true"
 android:drawable="@drawable/pic_orange"
 /> 

<!--获得焦点时的图片背景-->
<item
 android:state_focused="true"
 android:drawable="@drawable/pic_green"
 />
</selector> 

先看看这个例子的结构:

selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

 <item android:state_selected="true">
 <shape>
  <gradient android:angle="270" android:endColor="#99BD4C"
  android:startColor="#A5D245" />
  <size android:height="60dp" android:width="320dp" />
  <corners android:radius="8dp" />
 </shape>
 </item>
 <item android:state_pressed="true">
 <shape>
  <gradient android:angle="270" android:endColor="#99BD4C"
  android:startColor="#A5D245"/>
  <size android:height="60dp" android:width="320dp" />
  <corners android:radius="8dp" />
 </shape>
 </item>
 <item>
 <shape>
  <gradient android:angle="270" android:endColor="#A8C3B0"
  android:startColor="#C6CFCE" />
  <size android:height="60dp" android:width="320dp" />
  <corners android:radius="8dp" />
 </shape>
 </item>
</selector>

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="horizontal"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:background="@drawable/selector"
 >
 <ImageView
 android:id="@+id/img"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center_vertical"
 android:layout_marginLeft="20dp"
 />
 <TextView
  android:text="data"
  android:id="@+id/title"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:gravity="center_vertical"
  android:layout_marginLeft="20dp"
  android:layout_marginTop="20dp"
  android:textSize="14sp"
  android:textStyle="bold"
  android:textColor="@color/black"
  >
 </TextView>
 </LinearLayout> 

main.xml

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:background="#253853"
 >
 <ListView
  android:id="@+id/list"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:cacheColorHint="#00000000"
  android:divider="#2A4562"
  android:dividerHeight="3px"
  android:listSelector="#264365"
  android:drawSelectorOnTop="false"
  >
 </ListView>
</LinearLayout>

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <color name="white">#FFFFFFFF</color>
 <color name="transparency">#00000000</color>
 <color name="title_bg">#1C86EE</color>
 <color name="end_color">#A0cfef83</color>
 <color name="black">#464646</color>
</resources>

MainActivity.java

package com.lingdududu.customlist; 

import java.util.ArrayList;
import java.util.HashMap; 

import xb.customlist.R; 

import android.R.array;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter; 

public class MainActivity extends Activity {
 ListView list; 

 String data[] = new String[]{
  "China","UK","USA","Japan","German","Canada","ET","Narotu"
 }; 

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main); 

 list =(ListView) findViewById(R.id.list);  

 SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.list_item,
  new String[]{"title","img"}, new int[]{R.id.title,R.id.img}); 

 list.setAdapter(adapter);
 } 

 private ArrayList<HashMap<String, Object>> getData() {
 ArrayList<HashMap<String, Object>> dlist = new ArrayList<HashMap<String,Object>>(); 

 for(int i =0;i<data.length;i++){
  HashMap<String, Object>map = new HashMap<String, Object>();
  map.put("title", data[i]);
  map.put("img", R.drawable.item_left2);
  dlist.add(map);
 }
 return dlist;
 }
} 

效果图:

以上就是对 Android shape和selector 的资料整理,有开发这块的同学可以看下。

(0)

相关推荐

  • Android使用shape使组件呈现出特殊效果的方法

    本文实例讲述了Android使用shape使组件呈现出特殊效果的方法.分享给大家供大家参考,具体如下: 使用到的布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"

  • Android Selector和Shape的使用方法

    1.背景选择器(位于res/drawable/,使用方法:android:background="@drawable/XXX") 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <selectorxmlns:android="http://schemas.android.com/apk/res/android"> <itemandroid:dra

  • Android自定义shape的使用示例

    MainActivity如下: 复制代码 代码如下: package cn.testshape; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 自定义shape的使用 */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.o

  • Android开发之WebView组件的使用解析

    在 Android 手机中内置了一款高性能 webkit 内核浏览器, SDK 中封装为一个叫做 WebView 组件. WebView 类是 WebKit 模块 Java 层的视图类,( 所有需要使用 Web 浏览功能的Android应用程序都要创建该视图对象显示和处理请求的网络资源.目前,WebKit 模块支持 HTTP.HTTPS.FTP 以及 javascript 请求. WebView 作为应用程序的 UI 接口,为用户提供了一系 列的网页浏览.用户交互接口,客户程序通过这些接口访问

  • Android编程使用自定义shape实现shadow阴影效果的方法

    本文实例讲述了Android编程使用自定义shape实现shadow阴影效果的方法.分享给大家供大家参考,具体如下: 直接上xml文件, 并且附上相应的解析: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_p

  • 三款Android炫酷Loading动画组件推荐

    最近突然心血来潮,对一些Loading感兴趣,Loading这玩意说重要也重要,说不重要也不重要,因为这是一个提升你产品体验的一个细节,如果loading做的好,对于一些耗时需要用户等待的页面来说会转移用户注意力,不会显得那么烦躁,所以你可以看到市面上各种各样好玩的Loading动画,那么这篇博客就准备收集下一些Loading动画吧,从这些实现思路上可以打开你们自己的思维,没准也会有创新好玩的Loading动画出现. 暂且先列举些最近GitHub新鲜出炉的Loading CircleProgre

  • Android中shape定义控件的使用

    Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码: <shape> <!-- 实心 --> <solid android:color="#ff9d77"/> <!-- 渐变 --> <gradient android:startColor="#ff8c00" android:endColor="#FFFFFF

  • Android控件系列之Shape使用方法

    如果你对Android系统自带的UI控件感觉不够满意,可以尝试下自定义控件,我们就以Button为例,很早以前Android123就写到过Android Button按钮控件美化方法里面提到了xml的selector构造.当然除了使用drawable这样的图片外今天Android开发网谈下自定义图形shape的方法,对于Button控件Android上支持以下几种属性shape.gradient.stroke.corners等. 复制代码 代码如下: 我们就以目前系统的Button的select

  • Android中的Shape和Selector的结合使用实例

    一:在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,首先我们了解一下Shape下面有哪些标签,都代表什么意思: (1).solid:填充 android:color指定填充的颜色 (2).gradient:渐变 android:startColor和android:endColor分别为起始和结束颜色, android:angle是渐变角度,必须为45的整数倍. 另外渐变默认的模式为android:type="linear",即线性渐变, 可以指定渐

  • Android中drawable使用Shape资源

    本文实例为大家分享了drawable使用Shape资源的具体内容,供大家参考,具体内容如下 1.画一条水平方向的虚线 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line" > <stroke andro

  • Android开发教程之shape和selector的结合使用

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和selector在美化控件中的作用是至关重要的. 1.Shape 简介 作用:XML中定义的几何形状 位置:res/drawable/文件的名称.xml 使用的方法: Java代码中:R.drawable.文件的名称 XML中:android:background="@drawable/文件的名称&

  • Android Shape控件美化实现代码

    如果你对Android系统自带的UI控件感觉不够满意,可以尝试下自定义控件,我们就以Button为例,很早以前Android123就写到过Android Button按钮控件美化方法里面提到了xml的selector构造.当然除了使用drawable这样的图片外今天Android开发网谈下自定义图形shape的方法,对于Button控件Android上支持以下几种属性shape.gradient.stroke.corners等.  我们就以目前系统的Button的selector为例说下: <s

随机推荐