android selector用法是否开启铃声selector怎么设置

我们做过项目的或多或少做过类似这样的一个功能:当点击某个组件后,组件的背景改变。初学者往往是这么一个思路:给组件设置一个监听器,当监听到事件的时候,改变组件的状态(背景图片或者背景色)。当然,这种做法是完全正确的,但是当组件特别多的时候,要处理的代码很多,很繁琐,android提供了一个selector(选择器)来改变界面的状态。下面我们以改变一个button背景来介绍它的具体用法。
1.因为selector是在Drawable文件夹下配置的,所以首先在Drawable文件夹下新建一个android xml文件
2.然后在button_selector.xml中添加以下代码
&&//被按下的背景
&&item android:state_pressed="true"&&android:drawable="@drawable/cancel_small_click"/&
&&//获得焦点时的背景&&item android:state_focused="true"&&android:drawable="@drawable/cancel_small_unclick"/&
&//默认时的背景&&item android:drawable="@drawable/cancel_small_unclick" /&
3.最后,使用这个xml文件,有两种方式:
&&(1)第一种是在组件中配置:android&"即可实现
&&(2)第二种是在代码中使用:Drawable drawable = getResources().getDrawable(R.drawable.button_selector); Button.setSelector(drawable)
&&&&&注1:列表设置selector后有可能显示为黑,需要加上android:cacheColorHint="@android:color/transparent"
&&&&&注2:Button的selector还有其他的效果
&&&&&android:state_selected是选中
&&&&&android:state_focused是获得焦点
&&&&&android:state_pressed是点击
&&&&&android:state_enabled是设置是否响应事件,指所有事件
&&&&&根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。以下就是配置button中的文字效果:drawable/button_font.xml
&&&&&&当然Button还可以实现更复杂的效果
结伴旅游,一个免费的交友网站:
推推族,免费得门票,游景区:
阅读(...) 评论() &在LinearLayout的属性中添加:&android:clickable="true"
阅读(...) 评论()以一个textView为例:
TextView tv = new TextView(UIUtils.getContext())
tv.setText(data)
tv.setTextSize(16)
tv.setTextColor(Color.WHITE)
tv.setGravity(Gravity.CENTER)
tv.setClickable(true)
int padding = DensityUtil.dip2px(UIUtils.getContext(), 6)
tv.setPadding(padding, padding, padding, padding)
GradientDrawable normalDrawable = new GradientDrawable()
//状态选择器
StateListDrawable stateListDrawable = new StateListDrawable()
normalDrawable.setColor(Color.RED)
normalDrawable.setShape(GradientDrawable.RECTANGLE)
normalDrawable.setCornerRadius(DensityUtil.dip2px(UIUtils.getContext(), 5))
//按下时的drawable
GradientDrawable pressedDrawable = new GradientDrawable()
pressedDrawable.setColor(Color.DKGRAY)
pressedDrawable.setShape(GradientDrawable.RECTANGLE)
pressedDrawable.setCornerRadius(DensityUtil.dip2px(UIUtils.getContext(), 5))
//给状态选择器添加状态
stateListDrawable.addState(new int[]{android.R.attr.state_pressed},pressedDrawable)
stateListDrawable.addState(new int[]{}, normalDrawable)
tv.setBackgroundDrawable(stateListDrawable)
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(UIUtils.getContext(), data, Toast.LENGTH_SHORT).show()
本文已收录于以下专栏:
相关文章推荐
Android中的Selector主要是用来改变ListView和Button控件的默认背景。其使用方法可以按一下步骤来设计:
(以在mylist_view.xml为例)
用一下方法基本上可以解决大多数字体颜色设置问题,先发一篇,明天继续发一篇高级的,通过用户选择的方式,改变字体颜色。
关键字: android textview color
程序员升职加薪指南!还缺一个“证”!
CSDN出品策划程序员9月规划,专为码农的升职加薪保驾护航,程序员的捷径,你get到了吗?听说阅读了这篇文章的人,都已实现了小梦想~快来揭秘!
例如一个TextView使用了如下的selector:
        android:id=&@+id/TextView_title&
 &#160...
android可以通过XML文件来创建selector,以Drawable对象的形式安装到组件上,以提供统一的风格设置。但是在某些时候,我们需要通过代码的形式来实现相同的功能,例如组件数量非常多,对应...
平常我们都是用xml来创建编写selector,最近由于项目需要,需要加载网络图片,问题来了,既要设置drawableTop又要动态加载网络图片?一开始想想没招,后面查找了资料,发现我们平常写的sel...
代码设置控件selector
作用:设置selector是为了使控件在不同的状态下显示不同的效果,如:按下时为红色背景,抬起时为白色的背景
说明:StateListDrawable相当于drawa...
引言selector中文的意思选择器,在Android中常常用来作组件的背景,这样做的好处是省去了用代码控制实现组件在不同状态下不同的背景颜色或图片的变换。使用十分方便。selector的定义sele...
一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片
Android颜色选择器介绍
使用Android的颜色选择器可以让我们的view在不同状态下显示不同的颜色。
1、Android中ListView 选择某项改变该行字体颜色
用两张图片做了个selector,使用ImageView的src或background使用selector点击时,总没出现点击效果,这是为什么呢?经常一番折腾后来才发现一个“秘密”。先不公开,大家
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)[转][Android]代码实现Selector按钮点击效果
原帖:/jason-star/archive//2706698.html
用途:动态设置Button、ImageView等组件在不同状态下的背景/前景显示效果。
&&&扩展下的话可以前景/背景的显示效果可以使用网络图片。
优点:灵活,减少xml的编写。
[AndroidOpenSource]frameworksasecorejavaandroidviewview.xml
[AndroidOpenSource]frameworksasecore
esvaluespublic.xml
代码如下:
& public static StateListDrawable
newSelector(Context context, int idNormal, int idPressed, int
idFocused,
idUnable) {
& & StateListDrawable bg = new
StateListDrawable();
& & Drawable normal = idNormal ==
-1 ? null : context.getResources().getDrawable(idNormal);
& & Drawable pressed = idPressed
== -1 ? null : context.getResources().getDrawable(idPressed);
& & Drawable focused = idFocused
== -1 ? null : context.getResources().getDrawable(idFocused);
& & Drawable unable = idUnable ==
-1 ? null : context.getResources().getDrawable(idUnable);
View.PRESSED_ENABLED_STATE_SET
& & bg.addState(new int[] {
android.R.attr.state_pressed, android.R.attr.state_enabled },
View.ENABLED_FOCUSED_STATE_SET
& & bg.addState(new int[] {
android.R.attr.state_enabled, android.R.attr.state_focused },
View.ENABLED_STATE_SET
& & bg.addState(new int[] {
android.R.attr.state_enabled }, normal);
View.FOCUSED_STATE_SET
& & bg.addState(new int[] {
android.R.attr.state_focused }, focused);
View.WINDOW_FOCUSED_STATE_SET
& & bg.addState(new int[] {
android.R.attr.state_window_focused }, unable);
& & // View.EMPTY_STATE_SET
& & bg.addState(new int[] {},
示例代码:
& & Button btnNormal = (Button)
findViewById(R.id.btnSampleNormal);
btnNormal.setBackgroundDrawable(newSelector(this,
R.drawable.btn_normal, R.drawable.btn_selected,
& R.drawable.btn_selected,
R.drawable.btn_unable));
& & Button btnUnable = (Button)
findViewById(R.id.btnSampleUnable);
btnUnable.setBackgroundDrawable(newSelector(this,
R.drawable.btn_normal, R.drawable.btn_selected,
& R.drawable.btn_selected,
R.drawable.btn_unable));
btnUnable.setEnabled(false);
btnUnable.setOnClickListener(this);
&&&&private&ColorStateList&createColorStateList(int&normal,&int&pressed,&int&focused,&int&unable)&{
&&&&&&&&int[]&colors&=&new&int[]&{&pressed,&focused,&normal,&focused,&unable,&normal&};
&&&&&&&&int[][]&states&=&new&int[6][];
&&&&&&&&states[0]&=&new&int[]&{&android.R.attr.state_pressed,&android.R.attr.state_enabled&};
&&&&&&&&states[1]&=&new&int[]&{&android.R.attr.state_enabled,&android.R.attr.state_focused&};
&&&&&&&&states[2]&=&new&int[]&{&android.R.attr.state_enabled&};
&&&&&&&&states[3]&=&new&int[]&{&android.R.attr.state_focused&};
&&&&&&&&states[4]&=&new&int[]&{&android.R.attr.state_window_focused&};
&&&&&&&&states[5]&=&new&int[]&{};
&&&&&&&&ColorStateList&colorList&=&new&ColorStateList(states,&colors);
&&&&&&&&return&colorL
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Android开发之设置铃声
首先介绍一下支持的铃声格式。有以下几种:
64赫兹Midi,AAC、AAC+、AMR、WAV、MP3、Real Audio、WMA、OGG等格式。
将音频文件设置成铃声很简单,只需如下几步即可:
1) 获取系统音频文件的Uri
Uri uri =MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());//获取系统音频文件的Uri
2) 将文件插入系统媒体库,并获取新的Uri
Uri newUri = this.getContentResolver().insert(uri,values);//将文件插入系统媒体库,并获取新的Uri
3) 设置铃声
RingtoneManager.setActualDefaultRingtoneUri(this, ringType, newUri);//设置铃声
下面是设置铃声的详细代码:
* 设置铃声
* @param ringType int: 铃声类型
* @param file File: 要设为铃声的文件
protected void setRingtone(int ringType, File file) {
// TODO Auto-generated method stub
boolean isRingtone=false,isNotification=false,isAlarm=false,isMusic=
String msg="";
switch (ringType) {
case ConstUtil.RING_ALARM://闹铃
msg="设置闹钟铃声!";
case ConstUtil.RING_NOTIFICATION://通知
isNotification=
msg="设置通知铃声成功!";
case ConstUtil.RING_RINGTONE://来电
isRingtone=
msg="设置来电铃声成功!";
case ConstUtil.RING_MUSIC://添加到铃声库(全部铃声)
msg="设置全部铃声成功!";
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, file.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.IS_RINGTONE, isRingtone);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, isNotification);
values.put(MediaStore.Audio.Media.IS_ALARM, isAlarm);
values.put(MediaStore.Audio.Media.IS_MUSIC, isMusic);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(file
.getAbsolutePath());//获取系统音频文件的Uri
Uri newUri = this.getContentResolver().insert(uri, values);//将文件插入系统媒体库,并获取新的Uri
RingtoneManager.setActualDefaultRingtoneUri(this,
ringType, newUri);//设置铃声
Toast.makeText(getApplicationContext(), msg,Toast.LENGTH_SHORT)

我要回帖

更多关于 android xml selector 的文章

 

随机推荐