在图像视图顶部绘制圆

时间:2012-01-03 22:54:17

标签: android graphics

目前在视图上我有一个ImageView和一个在视图上绘制圆圈的自定义类。它将在视图上绘制圆圈,但它隐藏在图像视图后面。我知道它在那里,因为当半径足够大时,我可以看到一个不在imageview后面的小部分。什么代码会把它带到前面?

编辑:发现上述问题不是问题。它似乎只是在我为视图上的搜索栏保留的部分上绘制它?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.image_process);
     mDraw = new Draw(this);

    addContentView(mDraw, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

    seekBar1 = (SeekBar) findViewById(R.id.seekBar1);
    b = (Button) findViewById(R.id.button1);
    seekBar1.setMax(500);

     seekBar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

        public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
             mDraw.setCords(500, 500, seekBar1.getProgress());
        }

        public void onStartTrackingTouch(SeekBar seekBar) {
             mDraw.setCords(500, 500, seekBar1.getProgress());              
        }

        public void onStopTrackingTouch(SeekBar seekBar) {
             mDraw.setCords(500, 500, seekBar1.getProgress());              
        }

     });



}

这是Draw类:

  package org.DTS.boltsize;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.View;

public class Draw extends View {
     private int x = 1;
     private int y = 1;
     private int r = 1;


    public Draw(Context context) {

            super(context);

            // TODO Auto-generated constructor stub

    }

public void setCords(int mx, int my, int mr ){
    x = mx;
    y = my;
    r = mr;
}


    protected void onDraw(Canvas canvas) {

            // TODO Auto-generated method stub

System.out.println("Drew :)");


            Paint paint = new Paint();

            paint.setStyle(Paint.Style.FILL);

            paint.setColor(Color.RED);

canvas.drawCircle(x, y, r, paint);
            super.onDraw(canvas);

    }

    public void DrawCirlce(Canvas canvas, int x, int y, int r){
        Paint paint = new Paint();
        paint.setStyle(Paint.Style.STROKE);
        paint.setColor(Color.GREEN);
        canvas.drawCircle(x, y, r, paint);
        super.onDraw(canvas);
    }





}

这是它的样子。那个红色圆圈应该覆盖整个屏幕。 enter image description here

2 个答案:

答案 0 :(得分:0)

我会绘制一个单独的位图,你可以在与FrameLayout中可能的位图相同的空间中使用不同的imageView。然后,您可以使用.bringToFront来决定z顺序。

答案 1 :(得分:-1)

通过将源转换为位图来解决,然后在该位图上绘制一个圆并将该最终位图发送到imageview。