android仿IOS按钮点击效果,一张图片实现
2013-04-09 17:35
1051 查看
个人一直觉得ios按钮比较特别,只需要用一张图片就可以实现点击的效果。而且,最觉得无耐的是有的客户提供过来的PSD文件只做了一个按钮的样式,并没有诸如获取焦点、按下、放开的各种样式图片,所以就想尝试实现用一张图片实现点击的效果。今天,翻了一些资料,终于做了一个效果出来,原理只是改变当前按钮背景的亮度,可能有更好的办法实现,目前就这个先用着啦。
自己实现的一个Button类,代码:
布局中:
参考文章:
http://yq135314.iteye.com/blog/1333511 http://blog.csdn.net/qinjuning/article/details/7474827 http://www.linuxidc.com/Linux/2012-01/50979.htm http://www.linuxidc.com/Linux/2012-02/54979.htm
自己实现的一个Button类,代码:
package com.example.hellojni; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.StateListDrawable; import android.util.AttributeSet; import android.widget.Button; public class MyButton extends Button { private Context context; public MyButton(Context context) { super(context); this.context = context; initMyButton(); } public MyButton(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; initMyButton(); } public MyButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context = context; initMyButton(); } private void initMyButton(){ setBackgroundDrawable(newSelector()); } /** * 传入改变亮度前的bitmap,返回改变亮度后的bitmap * @param srcBitmap * @return */ private Drawable changeBrightnessBitmap(Bitmap srcBitmap){ Bitmap bmp = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Config.ARGB_8888); int brightness = 60 - 127; ColorMatrix cMatrix = new ColorMatrix(); cMatrix.set(new float[] { 1, 0, 0, 0, brightness, 0, 1, 0, 0, brightness,// 改变亮度 0, 0, 1, 0, brightness, 0, 0, 0, 1, 0 }); Paint paint = new Paint(); paint.setColorFilter(new ColorMatrixColorFilter(cMatrix)); Canvas canvas = new Canvas(bmp); // 在Canvas上绘制一个Bitmap canvas.drawBitmap(srcBitmap, 0, 0, paint); return new BitmapDrawable(bmp); } /** 设置Selector。 */ private StateListDrawable newSelector() { StateListDrawable bg = new StateListDrawable(); Drawable normal =getBackground(); Drawable pressed =changeBrightnessBitmap(((BitmapDrawable) getBackground()).getBitmap());; // View.PRESSED_ENABLED_STATE_SET bg.addState(new int[] { android.R.attr.state_pressed, android.R.attr.state_enabled }, pressed); // View.ENABLED_STATE_SET bg.addState(new int[] { android.R.attr.state_enabled }, normal); // View.EMPTY_STATE_SET bg.addState(new int[] {}, normal); return bg; } }
布局中:
<com.example.hellojni.MyButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/top_left_btn_bg" />效果:
参考文章:
http://yq135314.iteye.com/blog/1333511 http://blog.csdn.net/qinjuning/article/details/7474827 http://www.linuxidc.com/Linux/2012-01/50979.htm http://www.linuxidc.com/Linux/2012-02/54979.htm
相关文章推荐
- android仿IOS按钮点击效果,一张图片实现
- android图片按钮点击变灰变量效果实现(一张背景图实现效果)
- Android中图片实现按钮点击效果
- Android 图片实现按钮点击切换效果
- Android 图片实现按钮点击切换效果
- Android selector 最佳写法 用一张图片实现按钮按下和普通效果的样式
- Android中图片实现按钮点击效果
- Android GridView 实现9宫格菜单,并实现item点击按压效果更改图片
- iOS开发UIImage和UIImageView属性介绍,实现图片动画,实现开始/停止按钮效果
- android如何实现按钮的点击水波纹效果:
- Android:实现点击图片时图片变暗的效果
- Android_UI_点击按钮切换背景效果实现
- Android 实现点击按钮获取验证码 60秒后重新获取效果
- Android点击WebView实现图片缩放及滑动浏览效果
- iOS -点击按钮查看大图,再次点击还原效果(此处以UITableViewCell为父视图,其中加载多个图片为例)
- 基于jquery实现左右按钮点击的图片切换效果
- android view中实现一张图片的渐隐效果
- Android自定义ImageView实现点击两张图片切换效果
- Android_UI_点击按钮切换背景效果实现
- Android实现按钮点击效果