android - 当按下 Activity 上的其他按钮时,图形应该持续存在

标签 android

在我的示例中,当我按下一个按钮时,会显示一个形状,但当我按下另一个按钮时,先前的形状会被删除。我希望在按下另一个按钮时该形状保持不变。在显示每个形状后,我正在使用方法 invalidate()。你能给我一个解决方案吗?下面是我使用的 Activity 。

public class StartMyDrawView extends Activity{
    MyDrawView mydrawview;
    public static int action=0;
    Intent netIntent;
    LinearLayout draw ;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("StartMyDrawView", "OnCreate()");
        setContentView(R.layout.designgraphic);
        draw = (LinearLayout) findViewById(R.id.linearLayout1);
        Button btnLine=(Button) findViewById(R.id.button1);
        Button btnCircle=(Button) findViewById(R.id.button2);
        Button btnRectangle=(Button) findViewById(R.id.button4);
        Button btnText=(Button) findViewById(R.id.button5);

        btnLine.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                action=1;
                draw.invalidate();
            }
        });

        btnCircle.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                action=2;
                draw.invalidate();
            }
        });

       btnRectangle.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                action=3;
                draw.invalidate();
            }
        });

        btnText.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                action=4;
                draw.invalidate();
            }
        });

        mydrawview =new MyDrawView(this);
        draw.addView(mydrawview);
    }

我扩展View的类如下

公共(public)类 MyDrawView 扩展 View {

Paint paint = new Paint();
int actionVal=0;
public MyDrawView(Context context) {
    super(context);
}

public void onDraw(Canvas canvas)
{
    super.onDraw(canvas);
     paint.setColor(Color.RED);
     paint.setStyle(Paint.Style.STROKE);
     if(StartMyDrawView.action==1)
         canvas.drawLine(0, 0, 200, 200, paint);
     if(StartMyDrawView.action==2)
         canvas.drawCircle(150, 150, 50, paint);
     if(StartMyDrawView.action==3)
         canvas.drawRect(20, 20, 150, 150, paint);
     if(StartMyDrawView.action==4)
         canvas.drawText("JUST DEMO", 150, 150, paint);
}

最佳答案

我认为每次调用 onDraw 时都会清除 Canvas 。

解决该问题的一种方法是通过在全局位图上执行绘制操作来保持状态,并且 onDraw 会将位图绘制到 Canvas 上。这没什么用,例如,请参阅已接受的答案 here .

关于可绘制对象的 Android 开发者主题 here .

关于android - 当按下 Activity 上的其他按钮时,图形应该持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153585/

相关文章:

android - 基于事件的安卓测试

android - 注销监听器时调用 super.onStop() 的正确方法

java - Kotlin 如何与 Java 和 JavaScript 互操作?

android - 将 args 传递给 aapt

java - AsyncTask - 如何在 onPostExecute 之后将值传递回 Activity 类?

android - Lint : "Newer Library Versions Available" when using variables

android - Flutter - 如何调试原生android代码

具有特定 useTargetVersion 和 minTargetVersion 的 Android ConnectionService

java - 方向改变时 fragment 崩溃

android - intent.setType(type) 可能的 Intent 类型是什么?