0

怎么样啊各位。我现在要做的是增加我现在在屏幕上的这个画布文本。我在画布上有一个位图,每次单击它时都会增加数字。我将变量打印到 logcat 中,它确实在增加,但没有在屏幕上绘制。

这是我现在拥有的更好主意的图片:

在此处输入图像描述

这是我的绘画课:

package com.example.touchperson;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;

import android.util.Log;
import android.view.View;

public class Drawing extends View {

    Bitmap robot; 
    Rect rec;
    Paint text;
    static int touchCount = 0;
    public Drawing(Context context)  {
        super(context);
        robot = BitmapFactory.decodeResource(getResources(), R.drawable.character);
        Log.i("Robot coord", Integer.toString(robot.getHeight()));;
        rec = new Rect(0, 0, 200 , 200);
        text = new Paint();
        text.setColor(Color.CYAN);
        text.setTextSize(100);

    }


    public boolean contains(int x, int y){

        if(rec.contains(x, y)){
            return true;

        }
        else{
            return false;
        }



    }



    @Override
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawColor(Color.WHITE);
    canvas.drawBitmap(robot, rec, rec,  null);
    canvas.drawText(Integer.toString(touchCount) ,(int) (canvas.getWidth()/2) , (int) (canvas.getHeight()/2), text);


}
}

这是我的主要活动课程:

package com.example.touchperson;

import android.os.Bundle;
import android.app.Activity;

import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;



public class MainActivity extends Activity implements OnTouchListener {


    Drawing view;
    Drawing count;





    @Override
    protected void onCreate(Bundle savedInstanceState)  {
        super.onCreate(savedInstanceState);
        view = new Drawing(this);
        view.setOnTouchListener(this);
        setContentView(view);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub

        switch(event.getAction()){
        case MotionEvent.ACTION_DOWN:

            if(view.contains((int) event.getX(), (int) event.getY())){

                Drawing.touchCount++;
                count = new Drawing(this);
                Log.i("touched", Integer.toString(Drawing.touchCount));
            }
            break;


        }
        return false;
    }



}

任何帮助将非常感激。

4

1 回答 1

0

您应该向您的绘图类添加一个更新方法,然后更新您在该方法中绘制的数字。您可能还需要使您的绘图类绘制的区域无效,以使新数字出现在屏幕上(以强制再次调用您的 onDraw)。

就像 Squonk 所说,您现在有 2 个 Drawing 类的实例,其中一个在屏幕布局中(只有“视图”)。

除此之外,我会添加一个 ImageButton 来显示机器人,然后添加一个 TextView 来显示数字并将这些元素添加到活动的布局中。单击 ImageButton 时,我只需将 TextView 的 Text 属性设置为下一个数字。仅当您渲染无法从开箱即用的组件中组合的内容时,才需要编写自定义的 View 对象。

于 2012-12-24T22:58:41.427 回答