需求如下:

设计一个类似电视遥控器的界面,需要有弧形或其他多边异形按钮

解答:

我们知道在电脑中所有图片全部都是矩形的....可能大家并没有注意到这个问题,据说是因为显示器都是矩形的。

基于这样一个条件,我们就知道想要做出异形图片是不可能的。这样明确了一点:即所有异形图片也都是异形图+透明区构成的。

那如何实现点击异形图才有效果,点击透明区域无效果呢?

我们这样实现:

public static class PassThroughButton extends Button {

private Bitmap mBitmap;

public PassThroughButton(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {

int color = mBitmap.getPixel((int) event.getX(),

(int) event.getY());

if (color == 0) {

return false;

}

}

return super.onTouchEvent(event);

}

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh) {

if (w == 0 && h == 0 && oldw == 0 && oldh == 0) {

super.onSizeChanged(w, h, oldw, oldh);

} else {

final StateListDrawable bkg = (StateListDrawable) getBackground();

mBitmap = Bitmap.createScaledBitmap(

((BitmapDrawable) bkg.getCurrent()).getBitmap(),

getWidth(), getHeight(), true);

}

}

}

自定义一个Button,重写其onTouch事件,按下的时候获取当前点的像素,如果有值就继续传递事件,如果是透明区域就拦截事件。

你看到的每一种颜色都可以独立的点击,附上源码哦:

http://download.csdn.net/detail/h3c4lenovo/6456139

android 异形按钮,Android 如何点击异形按钮相关推荐

  1. 让Android屏幕不响应任何点击

    FBI Warning:欢迎转载,但请标明出处:http://blog.csdn.net/codezjx/article/details/45220101,未经本人同意请勿用于商业用途,感谢支持! 原 ...

  2. php如何模拟网页点击按钮,python模拟点击网页按钮如何实现 python模拟点击网页按钮实现方法...

    python模拟点击网页按钮如何实现 python模拟点击网页按钮实现方法 本篇文章小编给大家分享一下python模拟点击网页按钮实现方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们 ...

  3. 【WPF学习笔记】之如何点击“新建”按钮,在面板中加载一条条的“用户控件”的信息:动画系列之(四)...

    ...... 承接上一系列动画三. 在主界面后台代码设置嵌套第二个用户控件. using System; using System.Collections.Generic; using System. ...

  4. html里面点击重置按钮无反应,点击重置按钮后没反应.

    HTML> javascript body{font-size:12px;} #txt{ height:400px; width:600px; border:#333 solid 1px; pa ...

  5. js实现绑定多个按钮并当点击某个按钮时改按钮颜色改变

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  6. C#怎么通过一个按钮Button,实现点击这个按钮可以打开一个文件或者文件夹?

    string path1 = @"d:\log.txt";  //打开D盘下的log.txt文件 System.Diagnostics.Process.Start(path1); ...

  7. android布局翻译,android – 使用翻译动画将视图从一个布局转换为另一个布局

    我是 Android动画的新手,我的要求是在点击该视图时将视图从一个布局转换为单个xml文件中的布局. 场景: 假设我单击一个按钮,它出现在xml文件中标题的顶部,它应该向下移动/转换(它应该会产生一 ...

  8. sikuli介绍及解决点击flash按钮的问题

    开始 还是继续上次的文章 解决 Selenium文件上传框无法识别的问题 在这篇文章里面介绍了如何解决windows文件上传框的问题.但是其实当时却避开了一个比较严重的问题,如何点击flash按钮.因 ...

  9. android按钮输出音频,android – 如何点击按钮播放声音

    我试图在模拟器上点击按钮播放声音文件,但我收到消息"应用程序播放音频已意外停止" 我的代码是: package com.java4u.android; import android ...

最新文章

  1. python之接口开发
  2. Python3中的类和实例
  3. 10 | 软件测试工程师需要掌握的非测试知识有哪些?
  4. 解决Git中fatal: refusing to merge unrelated histories(亲测)
  5. BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
  6. 图解通信原理与案例分析-33:传感器种类以及传感器工作原理详解
  7. bouncing results问题
  8. 2023年Java面试题大全(最新版版)面试题附答案详解,看完BTA可进
  9. 安科瑞无线测温装置ARTM的功能特点有哪些
  10. vue使用marked解析markdown文本遇到的坑及解决方法
  11. 逸创云客服获“金耳唛杯”年度中国最佳客户中心技术产品奖
  12. Python实现手机号归属地查询
  13. python怎么pip离线下载_pip下载保存Python包,pip离线安装
  14. 64位linux安装adobe flash play插件
  15. 注解方式@WebFilter控制做个 filter的执行顺序
  16. 2020-09-30WEB前端开发准备-Atom编辑器使用说明 Atom常用插件推荐 Atom快捷键
  17. 实名登记下的NFC手机读取二代证方法
  18. 了解软件测试职业以及发展定位
  19. MacOS搭建OMNeTpp+Veins+SUMO车联网仿真平台
  20. mysql msi 是离线安装吗_mysql 5.7.18 MSI安装图文教程

热门文章

  1. 蓝桥杯 2012 3 拼音字母
  2. PKS虚拟服务器B,PKS 演示 — 虚拟化网络 NSX-T
  3. python类的各种方法
  4. RobotFramework(RF)万能关键字-Evaluate
  5. linux挂载nfs文件失败,挂载nfs文件系统时错误
  6. Can anybody get it?
  7. 故障模块名称kernelbase.dll_2020广东松下200W马达回收回收价格公道西门子模块-聚力...
  8. 什么是方法,方法的作用
  9. 基于layui的省市区三级联动
  10. 慕课:软件测试各章节答案