当前位置: 代码迷 >> Android >> Android 怎么点击异形按钮
  详细解决方案

Android 怎么点击异形按钮

热度:22   发布时间:2016-04-28 07:35:33.0
Android 如何点击异形按钮

需求如下:

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


解答:

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

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


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

我们这样实现:

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事件,按下的时候获取当前点的像素,如果有值就继续传递事件,如果是透明区域就拦截事件。

  相关解决方案