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

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 的资料整理,有开发这块的同学可以看下。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, shape
, selector
, 讲解
, 和
, 的实例
shape和selector
selector shape、selector和shape、selector嵌套shape、shape selector无效、java selector实例,以便于您获取更多的相关知识。

时间: 2024-10-04 18:50:40

Android shape和selector 结合使用实例代码_Android的相关文章

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 百度地图POI搜索功能实例代码_Android

在没介绍正文之前先给大家说下poi是什么意思. 由于工作的关系,经常在文件中会看到POI这三个字母的缩写,但是一直对POI的概念和含义没有很详细的去研究其背后代表的意思.今天下班之前,又看到了POI这三个字母,决定认认真真的搜索一些POI具体的含义. POI是英文的缩写,原来的单词是point of interest, 直译成中文就是兴趣点的意思.兴趣点这个词最早来自于导航地图厂商.地图厂商为了提供尽可能多的位置信息,花费了很大的精力去寻找诸如加油站,餐馆,酒店,景点等目的地,这些目的地其实都可

Android实现图片轮播切换实例代码_Android

利用Android的ViewFlipper和AnimationUtils实现图片带有动画的轮播切换,其中当点击"上一张"图片时,切换到上一张图片:当点击"下一张"图片时,切换到下一张图片.其效果图如下: 设置布局文件,其内容如下: activity_image_flipper_shade.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xm

Android自定义水波纹动画Layout实例代码_Android

话不多说,我们先来看看效果: Hi前辈搜索预览 这一张是<Hi前辈>的搜索预览图,你可以在这里下载这个APP查看更多效果: http://www.wandoujia.com/apps/com.superlity.hiqianbei LSearchView 这是一个MD风格的搜索框,集成了ripple动画以及search时的loading,使用很简单,如果你也需要这样的搜索控件不妨来试试:https://github.com/onlynight/LSearchView RippleEverywh

Android AutoCompleteTextView自动提示文本框实例代码_Android

 自动提示文本框(AutoCompleteTextView)可以加强用户体验,缩短用户的输入时间(百度的搜索框就是这个效果). 先给大家展示下效果图,如果大家感觉还不错,请参考实现代码:   最后一张获取文本框里面的值(其实就跟TextView.EditText一样): 首先,在xml中定义AutoCompleteTextView控件: activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/ap

Android实现沉浸式导航栏实例代码_Android

废话不多说了,直接给大家贴代码了,具体代码如下所示: private SystemBarTintManager tintManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // getWindow().addFlags(WindowManager.Layo

Android 文件选择器详解及实例代码_Android

     本文给大家讲解下Android文件选择器的使用.实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDialog控件.        此实例的实现过程很简单,这样可以让大家快速的熟悉Android文件选择器,提高开发效率.        网上曾经见到过一个关于文件选择器的实例,很多人都看过,本实例是根据它修改而成的,但更容易理解,效率也更高,另外,本实例有自己的特点:        1.监听了用户按下Back键的事件,使其返回上一层目录.       

Android中自定义对话框(Dialog)的实例代码_Android

1.修改系统默认的Dialog样式(风格.主题) 2.自定义Dialog布局文件 3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类  第一步: 我们知道Android定义个控件或View的样式都是通过定义其style来实现的,查看Android框架中的主题文件,在源码中的路径:/frameworks/base/core/res/res/values/themes.xml,我们可以看到,Android为Dialog定义

Android使用ImageView 制作透明圆弧实例代码_Android

这几天因为项目需求,需要在ImageView上面叠加一层透明圆弧,并且在沿着圆弧的方向显示相应的文字,效果如下图所示: 拿到这个需求,首先想到的是自定义一个ImageView来实现此功能,即在onDraw()中绘制圆弧和文字.同时因为要保证圆弧的位置可以任意摆放,圆弧的颜色.透明度以及文字大小.颜色等都是可控的,所以增加了一些自定义属性.实现代码非常简单,如下: 1.自定义ImageView: package com.chunk.customviewsdemo.views.ArcImageVie