Android ImageButton添加按下的动画效果 变亮或变暗
2013-05-15 08:37
477 查看
Android中使用ImageButton的话,程序里按下那个ImageButton时感觉不到任何按下的效果。
网上有2中经典的解决方案,一种是使用xml,一种是写在代码里。
这里我想要介绍另一种方法,使ImageButton有按下的特效,只需要准备一张普通的图片,不需要按下效果的图片。
直接看示例代码,创建 TouchLight 和 TouchDark 这两个 OnTouchListener,然后给 ImageButton 设置OnTouchListener就行了,如果使用TouchLight,则按下效果是按键变亮;另一个就是变暗。
代码里的两个 float 数组里存的东西是颜色矩阵,不了解颜色矩阵也没关系,使用这个附件就行,只需调整亮度、对比度之类的值,然后把生产的颜色矩阵复制到代码里
网上有2中经典的解决方案,一种是使用xml,一种是写在代码里。
这里我想要介绍另一种方法,使ImageButton有按下的特效,只需要准备一张普通的图片,不需要按下效果的图片。
直接看示例代码,创建 TouchLight 和 TouchDark 这两个 OnTouchListener,然后给 ImageButton 设置OnTouchListener就行了,如果使用TouchLight,则按下效果是按键变亮;另一个就是变暗。
import android.app.Activity; import android.graphics.ColorMatrixColorFilter; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; public class TouchedAnimation extends Activity { public static final OnTouchListener TouchLight = new OnTouchListener() { 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}; 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}; @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { v.getBackground().setColorFilter( new ColorMatrixColorFilter(BT_SELECTED)); v.setBackgroundDrawable(v.getBackground()); } else if (event.getAction() == MotionEvent.ACTION_UP) { v.getBackground().setColorFilter( new ColorMatrixColorFilter(BT_NOT_SELECTED)); v.setBackgroundDrawable(v.getBackground()); } return false; } }; public static final OnTouchListener TouchDark = new OnTouchListener() { 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}; 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}; @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { v.getBackground().setColorFilter( new ColorMatrixColorFilter(BT_SELECTED)); v.setBackgroundDrawable(v.getBackground()); } else if (event.getAction() == MotionEvent.ACTION_UP) { v.getBackground().setColorFilter( new ColorMatrixColorFilter(BT_NOT_SELECTED)); v.setBackgroundDrawable(v.getBackground()); } return false; } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageButton ib1, ib2; ib1 = (ImageButton) findViewById(R.id.ImageButton01); ib2 = (ImageButton) findViewById(R.id.ImageButton02); ib1.setOnTouchListener(TouchLight); ib2.setOnTouchListener(TouchDark); } }
代码里的两个 float 数组里存的东西是颜色矩阵,不了解颜色矩阵也没关系,使用这个附件就行,只需调整亮度、对比度之类的值,然后把生产的颜色矩阵复制到代码里
相关文章推荐
- [Android实例] Android ImageButton动画效果
- ImageButton设置 android:background添加点击效果
- android 给LinearLayout中添加一定数量的控件,并让着一定数量的控件从右到左移动,每隔若干秒停顿一下,最后一个view链接第一个view,然后继续移动循环往复,形成一个死循环简单动画效果
- Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- [Android] 为ImageButton添加按下的动画效果 变亮或变暗
- android PopupWindow 添加下拉展开动画效果
- android图片切换ImageSwichter的动画切换效果
- Android ImageButton自定义按钮的按下效果的代码实现方法
- Android实现ViewPager滑屏动作并添加动画效果
- [Android] 为ImageButton添加按下的动画效果 变亮或变暗
- Android仿一点资讯收藏Toast动画效果(给Toast添加动画效果)
- Android 属性动画(Property Animation 给按钮的添加添加动画效果,同样可以用在整个布局上) (下)(viewGroup创建对象竟然可以用布局的id)
- Android为invisble属性添加动画效果
- Android动画效果之自定义ViewGroup添加布局动画(五)
- Android 笔记:ImageButton单击切换按钮图片效果的实现(转)
- Android gallery 实现定时滑动并添加动画效果
- Android中自定义ImageView添加文字设置按下效果详解
- android中给TextView或者Button的文字添加阴影效果
- android中动给组建添加动画载入效果
- Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。