Android不规则按钮实现方式
来源:互联网 发布:自学软件开发 编辑:程序博客网 时间:2024/05/22 07:55
http://3y.uu456.com/bp-c27sdb270066fs33sa8121b0-1.html
个人使用过的不规则按钮的实现方式有以下几种:
1. 使用矢量图自绘,layer-list,shape都是不可缺少的元素。
2. 使用imagebutton,src设为图片,background设为transparent
3. 使用imagebutton,src不设置,background设置为图片
4. 使用button,使用9patch背景图片,可使用($ANDROID_SDK/tools/draw9patch.bat)获取9patch图片。
使用src作为图片源的时候,总是控制不好图片大小,scaleType控制起来不是很方便。
使用background的时候,不同于css的background,该图片是根据控件大小自动缩放的。
甚至变形都可以。
如果是固定的大小,个人比较倾向于使用imagebutton,并且设置background作为背景图片,当然,可以结合selector或者使用矢量图的layer-list.
android ImageButton默认响应区域是矩形,而有时候界面的需要会使用不规则图片,比如扇形,要响应有图片的地方,没图片的地方不响应,今天想了下,实现了,关键代码如下:
imgbt=(ImageButton)findViewById(R.id.imgbt01);
bitmap=((BitmapDrawable)(imgbt.getDrawable())).getBitmap();//得到ImageButton的图片
imgbt.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(bitmap.getPixel((int)(event.getX()),((int)event.getY()))==0){//判断点击处像素的颜色是否为0,0表示没 //内容
System.out.println("点击区没图像 "+
bitmap.getPixel((int)(event.getX()),((int)event.getY())));
}else{
System.out.println("点击区有图像 "+
bitmap.getPixel((int)(event.getX()),((int)event.getY())));
}
return false;
}
});
================================================
最近跟同事在讨论明星脸改版的问题,新版本可能会使用不规则形状按钮,继续跟上一个视觉合作,新版本照照明星脸搭配上这种按钮显得更活泼,这篇记录ImageButton不规则形状按钮的使用方法。
上网查了一下该怎么处理,发现其实并不难,而且只要下关键字「不规则形状 ImageButton」就可以找到非常多的资料,小蛙在这边记录一下刚刚测试的,之后如果有什么其他修改会继续补充在这边。
一开始听到ImageButton要做成不规则形状好像很困难,网络上找到的做法大多如下:首先我们先建立一个ImageButton,在layou.xml中透过android:background="#00000000”把背景设定成透明,之后在程序中取得ImageButton的Bitmap元件,在Bitmap上设定OnTouchListener监控触控事件,当触控事件发生后再判断所击点的坐标上有没有pixel存在,并做相对应的处理。
程序码如下:
// 取得ImageButton中使用Bitmap
ImageButton img = (ImageButton)findViewById(R.id.imageButton1);
final Bitmap bitmap = ((BitmapDrawable)(img.getDrawable())).getBitmap(); // 设定触控荧幕监听
img.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// 如果点到的地方getPixel() = 0,表示该点不在图形内
if(bitmap.getPixel((int)(event.getX()),((int)event.getY()))==0){
Log.e("没有点到", "NO"); }
else{ Log.e("点到图片", "Yes");
} return false;
} }
);
这边可以再设定一个flag去控制touch(click)只执行一次(避免同个动作会重复多次,从LogCat中就可以看到)。
- Android不规则按钮实现方式
- android不规则按钮的实现方式
- Android 实现不规则形状按钮
- iOS不规则按钮实现
- android不规则图片按钮
- Android 不规则按钮
- cocos2dx 不规则按钮的实现
- 亲测:NGUI不规则按钮实现 !!!!
- Unity不规则按钮的实现
- DirectUI下不规则按钮的点选方式
- win32 api 实现不规则形状按钮
- C#中实现不规则的按钮
- Unity3d笔记:如何实现不规则多边形按钮
- Android 实现不规则ImageView布局
- Android常见的按钮监听器实现方式
- Android常见的按钮监听器实现方式
- Android常见的按钮监听器实现方式
- Android常见的按钮监听器实现方式
- Shell(一):功能、配置和插件(附iTerm 2(for mac) && Oh My Zsh教程)
- [翻译][Trident] Storm Trident 教程
- javascript——原型实现继承
- Android sdk content loader 0%的解决方案
- 实现Material风格的滑动刷新Swipe to Refresh
- Android不规则按钮实现方式
- 常用 C++开源库
- 制作iOS Ad-Hoc测试应用
- debian7 安装配置总结
- spark + ansj 对大数据量中文进行分词
- 解决kindeditor中ajax提交表单无法获取数据的问题
- javascript——混合继承(借用构造函数+原型继承)
- Android UI之FrameLayout(帧布局)
- 云大URP选课辅助软件 —— 3.6.0