【问题标题】:How to draw a circle on imageview on touch at particular point in Android如何在Android中的特定点触摸时在imageview上画一个圆圈
【发布时间】:2018-09-24 23:21:53
【问题描述】:

这是我在 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);

}

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

【问题讨论】:

    标签: android android-imageview


    【解决方案1】:

    尝试以下代码。 my_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;
            }
    }
    

    【讨论】:

    • mainActivity中如何调用这个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多