图片点击之穿透点击

原创 2016年08月29日 14:14:59
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable.ConstantState;
import android.graphics.drawable.DrawableContainer.DrawableContainerState;
import android.graphics.drawable.StateListDrawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Button;

public class TriangleButton extends Button {

    private Bitmap mBitmap;

    public TriangleButton(Context context) {
        this(context, null);
    }

    public TriangleButton(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public TriangleButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            if (mBitmap == null) {
                mBitmap = getBackgroundBitmap();
            }
            if (mBitmap == null) {
                return super.dispatchTouchEvent(event);
            }
            try {
                int pixel = mBitmap.getPixel((int) event.getX(), (int) event.getY());
                if (pixel == 0) {
                    return false;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return super.dispatchTouchEvent(event);
    }

    private Bitmap getBackgroundBitmap() {
        Drawable drawable = getBackground();
        if (drawable == null) {
            return null;
        }

        if (drawable instanceof BitmapDrawable) {
            return ((BitmapDrawable) drawable).getBitmap();
        }

        if (drawable instanceof StateListDrawable) {
            StateListDrawable stateListDrawable = (StateListDrawable) drawable;
            ConstantState constantState = stateListDrawable.getConstantState();
            if (constantState instanceof DrawableContainerState) {
                DrawableContainerState drwblContainerState = (DrawableContainerState) constantState;
                Drawable[] drawables = drwblContainerState.getChildren();
                if (drawables == null || drawables.length < 1) {
                    return null;
                }
                for (Drawable drwbl : drawables) {
                    if (drwbl instanceof BitmapDrawable) {
                        return ((BitmapDrawable) drwbl).getBitmap();
                    }
                }
            }
        }

        return null;
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

穿透图片响应下层image事件

在做绚丽的界面的时候经常会用到不规则的图片,而我们美工给的图片一般都是方形的图片,在不规则的图形背后还有透明的部分。然而如果我们都使用整体的图片的话,很多图片就会出现交叉的部分,再比如我们如果给每一个...
  • u011864410
  • u011864410
  • 2016年07月05日 17:15
  • 863

Unity 解决点击 UI 穿透问题

最近在学习的过程中遇到一个问题,那就是当有 ui 时如果你点击 ui,这时如果鼠标下面还有一些3d物体也有点击效果,这时候也会触发。这是一位点击的时候,鼠标“穿透”了。,但我们是不想要这种效果发生的。...
  • u014230923
  • u014230923
  • 2016年05月24日 20:45
  • 3643

Egret)egret.Bitmap对象设置透明度0的区域点击可穿透

传入的 egret.Bitmap 对象设置 this.pixelHitTest = true;
  • taotao3686
  • taotao3686
  • 2016年01月06日 15:55
  • 2940

NGUI在3D场景中点击穿透解决办法

参考资料: 1:http://www.unitymanual.com/thread-22018-1-1.html 2
  • anmofeng
  • anmofeng
  • 2014年10月23日 23:22
  • 2544

移动页面【点击穿透】问题

1. click事件与300s延迟      移动浏览器,用户触碰页面之后需等待一段时间来判断是不是(double Tap)动作,而不是立即响应单击(click),响应时间为300ms。    移...
  • qq_29066959
  • qq_29066959
  • 2016年03月02日 10:42
  • 1163

Unity 解决UI点击穿透问题

原文http://blog.csdn.net/u014230923/article/details/51493382 这几天没事做一个小项目,发现点击UI界面时,如果鼠标下方物体有点击效果,在点击UI...
  • newQIanMo
  • newQIanMo
  • 2016年10月23日 16:27
  • 1884

移动页面点击穿透问题解决方案

移动页面点击穿透问题解决方案 原文  http://www.ayqy.net/blog/移动页面点击穿透问题解决方案/ 一.click与300ms延迟 移动浏览器提供一个特殊的功能:双击(...
  • helloxiaoliang
  • helloxiaoliang
  • 2016年05月10日 12:15
  • 8830

css3 pointer-events:none 允许点击穿透

.container {     position: relative;     width: 200px;     height: 50px;     margin: 20px 0; } ...
  • xtaydwxf1988
  • xtaydwxf1988
  • 2017年04月21日 09:29
  • 629

Ngui 五种点击事件实现方式及在3d场景中点击穿透的情况

本帖最后由 ζއ随风去旅行 于 2014-8-27 11:57 编辑 ngui作为unity界面插件之一中,无疑是最好用,使用最多的了从自学unity到现在界面一直使用它 由于它的持续更新...
  • Iseeyouavril
  • Iseeyouavril
  • 2014年09月16日 14:35
  • 2147

【Android学习笔记】 点击穿透(Click Through)

问题:开发一个App,主界面用了Activity,子页面用了Fragment。从Activity跳转到Fragment后Fragment透明,并且点击击穿到Axtivity。 分析:刚开始没有注意到点...
  • Insert_day
  • Insert_day
  • 2014年01月24日 15:54
  • 6859
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图片点击之穿透点击
举报原因:
原因补充:

(最多只允许输入30个字)