android - 如何在 Android 中的特定点触摸时在 imageview 上绘制圆圈

标签 android android-imageview

这是我在 androidmanifest 文件中的 ImageView。

<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="+id/imageview1"></ImageView>

我在触摸时在 imageview 上画了一个圆圈,但圆圈是在左上角绘制的。

这是我的代码:

ImageView myimage=(ImageView)findViewById(R.id.imageview1);
myimage.setImageResource(R.drawable.penguins);

BitmapDrawable bmpdraw=(BitmapDrawable)myimage.getDrawable();
Bitmap bmp=bmpdraw.getCopy().config();
Canvas m_canvas=new Canvas(bmp);


public void onTouch(View v,MotionEvent event){
int x=event.getX();
int y=event.getY();
canvas.drawCircle(x,y,10,paint);
myimage.setBitmap(bmp);

}

我开始知道 Canvas 位置与 imageview 相比是不同的。

最佳答案

尝试以下代码。 我的 Canvas .xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rl_main"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


</RelativeLayout>

MyCanvas.java

public class MyCanvas extends Activity {
    private RelativeLayout rl_Main;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sms_read);
        rl_Main = (RelativeLayout) findViewById(R.id.rl_main);
        rl_Main.addView(new MyView(this));
    }

    class MyView extends View{


        Paint paint = new Paint();
        Point point = new Point();
        public MyView(Context context) {
            super(context);
            paint.setColor(Color.RED);
            paint.setStrokeWidth(15);
            paint.setStyle(Style.STROKE);
        }

        @Override
        protected void onDraw(Canvas canvas) {
              Bitmap b=BitmapFactory.decodeResource(getResources(), R.drawable.images);
              canvas.drawBitmap(b, 0, 0, paint);
              canvas.drawCircle(point.x, point.y, 100, paint);
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                point.x = event.getX();
                point.y = event.getY();

            }
              invalidate();
            return true;

        }

    }
     class Point {
            float x, y;
        }
}

关于android - 如何在 Android 中的特定点触摸时在 imageview 上绘制圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18929330/

相关文章:

android - 获取 TextInputLayout 中轮廓框的高度

android - 使用 RoboVM 将 App 上传到 Apple 的 App Store 时出现问题

android - 圆形 ImageView 显示方形图像

android - ImageView 的图像未随 LinearLayout 的高度调整

java - 将 bytes[] 更改为字符串

Android 应用卡在白色空白屏幕上,看起来像是 Facebook Android SDK 4.36.0 问题

android - 如何在 iText Pdf 中设置来自 SD 卡的图像

android - onTouch 提供奇怪的触摸点 Android

android - 使用 Picasso 加载大图像

android - 将位图设置为背景并裁剪它