android view增加点击效果,如点击时变暗。
2013-09-26 14:36
330 查看
网上方法太多了,这里抄2个方法,不知道有没有效果,还没验证过:
1.使ImageButton有按下的特效,只需要准备一张普通的图片,不需要按下效果的图片。
直接看示例代码,创建TouchLight和TouchDark这两个OnTouchListener,然后给ImageButton设置OnTouchListener就行了,如果使用TouchLight,则按下效果是按键变亮;另一个就是变暗。
代码里的两个float数组里存的东西是颜色矩阵,不了解颜色矩阵也没关系,使用这个附件就行,只需调整亮度、对比度之类的值,然后把生产的颜色矩阵复制到代码里。
附件:ColorMatrixDemo.swf
------------------------------------------------------------
2.Android开发中,View的图片是动态生成的,我们需要增加点击效果。像iReader的书架中的书籍,点击变暗。
使用很简单:
ImageViewiv=(ImageView)this.findViewById(R.id.image_view1);Drawabled=Drawable.createFromPath("picPath");StateListDrawablesld=createSLD(this,d);iv.setImageDrawable(sld);///增加如下两个方法:
publicDrawablecreateDrawable(Drawabled,Paintp){
BitmapDrawablebd=(BitmapDrawable)d;Bitmapb=bd.getBitmap();Bitmapbitmap=Bitmap.createBitmap(bd.getIntrinsicWidth(),
bd.getIntrinsicHeight(),Config.ARGB_8888);Canvascanvas=newCanvas(bitmap);canvas.drawBitmap(b,0,0,p);//关键代码,使用新的Paint画原图,
returnnewBitmapDrawable(bitmap);}/**设置Selector。本次只增加点击变暗的效果,注释的代码为更多的效果*/
publicStateListDrawablecreateSLD(Contextcontext,Drawabledrawable){
StateListDrawablebg=newStateListDrawable();Paintp=newPaint();p.setColor(0x40222222);//PaintARGB色值,A=0x40不透明。RGB222222暗色
Drawablenormal=drawable;Drawablepressed=createDrawable(drawable,p);//p=newPaint();//p.setColor(0x8000FF00);//Drawablefocused=createDrawable(drawable,p);//p=newPaint();//p.setColor(0x800000FF);//Drawableunable=createDrawable(drawable,p);//View.PRESSED_ENABLED_STATE_SET
bg.addState(newint[]{android.R.attr.state_pressed,
android.R.attr.state_enabled},pressed);//View.ENABLED_FOCUSED_STATE_SET
//bg.addState(newint[]{android.R.attr.state_enabled,
//android.R.attr.state_focused},focused);//View.ENABLED_STATE_SET
bg.addState(newint[]{android.R.attr.state_enabled},normal);//View.FOCUSED_STATE_SET
//bg.addState(newint[]{android.R.attr.state_focused},focused);////View.WINDOW_FOCUSED_STATE_SET
//bg.addState(newint[]{android.R.attr.state_window_focused},
//unable);//View.EMPTY_STATE_SET
bg.addState(newint[]{},normal);returnbg;}
1.使ImageButton有按下的特效,只需要准备一张普通的图片,不需要按下效果的图片。
直接看示例代码,创建TouchLight和TouchDark这两个OnTouchListener,然后给ImageButton设置OnTouchListener就行了,如果使用TouchLight,则按下效果是按键变亮;另一个就是变暗。
01 | import android.app.Activity; |
02 | import android.graphics.ColorMatrixColorFilter; |
03 | import android.view.MotionEvent; |
04 | import android.view.View; |
05 | import android.view.View.OnTouchListener; |
06 |
07 | public class TouchedAnimation extends Activity{ |
08 |
09 | public static final OnTouchListenerTouchLight= new OnTouchListener(){ |
10 |
11 | public final float []BT_SELECTED= new float []{ 1 , 0 , 0 , 0 , 50 , 0 , 1 , 0 , 0 , 50 , 0 , 0 , 1 , 0 , 50 , 0 , 0 , 0 , 1 , 0 }; |
12 | public final float []BT_NOT_SELECTED= new float []{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }; |
13 |
14 | @Override |
15 | public boolean
|
16 | if (event.getAction()==MotionEvent.ACTION_DOWN){ |
17 | v.getBackground().setColorFilter( |
18 | new ColorMatrixColorFilter(BT_SELECTED)); |
19 | v.setBackgroundDrawable(v.getBackground()); |
20 | } else if (event.getAction()==MotionEvent.ACTION_UP){ |
21 | v.getBackground().setColorFilter( |
22 | new ColorMatrixColorFilter(BT_NOT_SELECTED)); |
23 | v.setBackgroundDrawable(v.getBackground()); |
24 | } |
25 | return false ; |
26 | } |
27 | }; |
28 |
29 | public static final OnTouchListenerTouchDark= new OnTouchListener(){ |
30 |
31 | public final float []BT_SELECTED= new float []{ 1 , 0 , 0 , 0 ,- 50 , 0 , 1 , 0 , 0 ,- 50 , 0 , 0 , 1 , 0 ,- 50 , 0 , 0 , 0 , 1 , 0 }; |
32 | public final float []BT_NOT_SELECTED= new float []{ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }; |
33 |
34 | @Override |
35 | public boolean
|
36 | if (event.getAction()==MotionEvent.ACTION_DOWN){ |
37 | v.getBackground().setColorFilter( |
38 | new ColorMatrixColorFilter(BT_SELECTED)); |
39 | v.setBackgroundDrawable(v.getBackground()); |
40 | } else if (event.getAction()==MotionEvent.ACTION_UP){ |
41 | v.getBackground().setColorFilter( |
42 | new ColorMatrixColorFilter(BT_NOT_SELECTED)); |
43 | v.setBackgroundDrawable(v.getBackground()); |
44 | } |
45 | return false ; |
46 | } |
47 | }; |
48 |
49 | @Override |
50 | public void
|
51 | super .onCreate(savedInstanceState); |
52 | setContentView(R.layout.main); |
53 |
54 | ImageButtonib1,ib2; |
55 | ib1=(ImageButton)findViewById(R.id.ImageButton01); |
56 | ib2=(ImageButton)findViewById(R.id.ImageButton02); |
57 |
58 | ib1.setOnTouchListener(TouchLight); |
59 | ib2.setOnTouchListener(TouchDark); |
60 | } |
61 | } |
附件:
------------------------------------------------------------
2.Android开发中,View的图片是动态生成的,我们需要增加点击效果。像iReader的书架中的书籍,点击变暗。
使用很简单:
ImageViewiv=(ImageView)this.findViewById(R.id.image_view1);Drawabled=Drawable.createFromPath("picPath");StateListDrawablesld=createSLD(this,d);iv.setImageDrawable(sld);///增加如下两个方法:
publicDrawablecreateDrawable(Drawabled,Paintp){
BitmapDrawablebd=(BitmapDrawable)d;Bitmapb=bd.getBitmap();Bitmapbitmap=Bitmap.createBitmap(bd.getIntrinsicWidth(),
bd.getIntrinsicHeight(),Config.ARGB_8888);Canvascanvas=newCanvas(bitmap);canvas.drawBitmap(b,0,0,p);//关键代码,使用新的Paint画原图,
returnnewBitmapDrawable(bitmap);}/**设置Selector。本次只增加点击变暗的效果,注释的代码为更多的效果*/
publicStateListDrawablecreateSLD(Contextcontext,Drawabledrawable){
StateListDrawablebg=newStateListDrawable();Paintp=newPaint();p.setColor(0x40222222);//PaintARGB色值,A=0x40不透明。RGB222222暗色
Drawablenormal=drawable;Drawablepressed=createDrawable(drawable,p);//p=newPaint();//p.setColor(0x8000FF00);//Drawablefocused=createDrawable(drawable,p);//p=newPaint();//p.setColor(0x800000FF);//Drawableunable=createDrawable(drawable,p);//View.PRESSED_ENABLED_STATE_SET
bg.addState(newint[]{android.R.attr.state_pressed,
android.R.attr.state_enabled},pressed);//View.ENABLED_FOCUSED_STATE_SET
//bg.addState(newint[]{android.R.attr.state_enabled,
//android.R.attr.state_focused},focused);//View.ENABLED_STATE_SET
bg.addState(newint[]{android.R.attr.state_enabled},normal);//View.FOCUSED_STATE_SET
//bg.addState(newint[]{android.R.attr.state_focused},focused);////View.WINDOW_FOCUSED_STATE_SET
//bg.addState(newint[]{android.R.attr.state_window_focused},
//unable);//View.EMPTY_STATE_SET
bg.addState(newint[]{},normal);returnbg;}
相关文章推荐
- android view增加点击效果,如:iReader书架书籍点击变暗
- Android之水波纹点击效果(RippleView)
- Android TextView点击颜色效果
- Android开发 自定义ViewGroup 实现微信九格图功能(图片不同排布不同) 和 一种图片点击变暗效果
- android TextView 实现自定义文字点击效果
- 【Android 界面效果48】Android-RecyclerView-Item点击事件设置
- Android 实现所有View的点击水波纹效果
- Android实现带动画效果的可点击展开TextView
- [Android | Material Design] RecyclerView Item点击事件 添加水波纹效果 两种办法
- Android背景选择器、Textview点击效果
- Android问题集(二)——TextView在点击时显示不同颜色,Button点击效果
- Android之水波纹点击效果(RippleView)
- Android中ImageView的点击变暗效果
- Android自定义View 画弧形,文字,并增加动画效果
- Android 有点击动画效果的View
- Android ViewGroup点击效果(背景色)
- Android 5.0 Material Design的实现点击任意View的水波效果
- android开发游记:textview超过长度点击展开自动滚动(在一个TextView中实现,不增加布局复杂度)
- RecyclerView的Item点击事件,增加删除Item瀑布流动画效果,长按拖动Item,RecyclerView复杂布局、实现新闻频道选择器
- android listview ,recycleView item没有点击效果