首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在ImageView中更改触摸区域的颜色?

如何在ImageView中更改触摸区域的颜色?
EN

Stack Overflow用户
提问于 2015-09-24 14:03:03
回答 1查看 1.2K关注 0票数 1

我需要为用户在ImageView上接触的区域设置白色。如果我setOnTouchListener到ImageView并得到触摸的x和y位置,我如何在ImageView中更改适当的像素值?还是有更好的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-24 15:12:05

我认为最简单的解决方案是扩展ImageView

下面是一个简单的例子,它画了一个环绕触点区域的黑色圆圈:

代码语言:javascript
代码运行次数:0
运行
复制
class TouchableImageView extends ImageView {
    private float x, y;
    private Paint paint;

    public TouchableImageView(Context context) {
        super(context);
        init();
    }

    public TouchableImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public TouchableImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public TouchableImageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        init();
    }

    void init() {
        paint = new Paint();
        paint.setColor(Color.BLACK);
        paint.setAntiAlias(true);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
      if (event.getAction() == MotionEvent.ACTION_DOWN) {
        x = event.getX();
        y = event.getY();
        invalidate();
      }
        return super.onTouchEvent(event);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        //Just for example - draw a circle around touch area:
        if(x!=0 || y!=0)
        canvas.drawCircle(x, y, 25, paint);
    }
}

编辑:

如果您想要将结果保存为位图-您需要更多的步骤,如描述的herehere

简而言之,您应该遵循以下步骤:

  1. 创建所需大小的新位图
  2. 为创建的位图- new Canvas(bitmap)创建新画布
  3. 在这张画布上重新画出你所需要的一切
  4. 将位图保存为图形文件
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32763430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档