Android 通过“在画布上绘制位图”;“我的听众”;在特定位置

Android 通过“在画布上绘制位图”;“我的听众”;在特定位置,android,canvas,bitmap,Android,Canvas,Bitmap,我使用画布通过触摸屏绘制位图,但它们不会在应用程序上显示位图 public class MainActivity extends Activity { public LinearLayout screenlayout; public void draw (int x, int y){ Bitmap b = BitmapFactory.decodeResource(getResources(),R.drawable.dam);

我使用
画布
通过触摸屏绘制
位图
,但它们不会在应用程序上显示位图

public class MainActivity extends Activity {
    public LinearLayout screenlayout;

    public void draw (int x, int y){
        Bitmap b = BitmapFactory.decodeResource(getResources(),R.drawable.dam);                     
        Canvas canvas=new Canvas(b);
        canvas.drawBitmap(b, x, y, null);
    }

    public void onCreate(Bundle saveInstanceState){
       super.onCreate(saveInstanceState);
       setContentView(R.layout.activity_main); 

       final LinearLayout screenlayout= (LinearLayout)findViewById(R.id.screenlayout);
        screenlayout.setOnTouchListener(new OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) { 
                    switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        int x = (int) event.getRawX();
                        int y = (int) event.getRawY();

                        draw(x,y);                       

                        break; 
                    case MotionEvent.ACTION_MOVE:                   
                        break; 
                    default: 
                        break; 
                    } 
                    return true;          
                   } 
            });              
    }             
 } 
试试这个

在main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
</LinearLayout>

正如Ganpat Kaliya所回答的,我提供了另一个代码来解决这个问题。感谢甘帕特·卡莉娅

公共类MainActivity扩展了活动{

public static float vtx;
public static float vty;

@Override 
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Test view = new Test(this);

    ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
    addContentView(view, params);
    view.setOnTouchListener(new OnTouchListener(){
        public boolean onTouch(View v, MotionEvent event) {
            float a = event.getX();
            float b = event.getY();

            vtx=a;
            vty=b;
            v.invalidate();
            return true; 
        } 
    });

} 
}

以及:

公共类测试扩展了视图{

public Test(Context context) {
    super(context); 
}

public void draw(Canvas canvas) {

    float x=MainActivity.vtx;
    float y=MainActivity.vty;

    Paint paint = new Paint();
    paint.setColor(Color.GREEN);
    paint.setStrokeWidth(6);

    canvas.drawLine(10,10,50,50,paint);
    paint.setColor(Color.RED);

    canvas.drawLine(50, 50, 90, 10, paint);
    canvas.drawCircle(50, 50, 3, paint);

    canvas.drawCircle(x,y,10,paint);        

    Bitmap b = BitmapFactory.decodeResource(getResources(),R.drawable.dam);                     
    canvas.drawBitmap(b, x, y, null);

} 

}

onCreate中的setContentView方法在哪里?还有你是如何初始化屏幕布局的?我在你评论的时候编辑过。看看这个:它们没有显示如何绘制位图。请帮帮我。你能帮帮我吗,Ganpat Kaliya?
public Test(Context context) {
    super(context); 
}

public void draw(Canvas canvas) {

    float x=MainActivity.vtx;
    float y=MainActivity.vty;

    Paint paint = new Paint();
    paint.setColor(Color.GREEN);
    paint.setStrokeWidth(6);

    canvas.drawLine(10,10,50,50,paint);
    paint.setColor(Color.RED);

    canvas.drawLine(50, 50, 90, 10, paint);
    canvas.drawCircle(50, 50, 3, paint);

    canvas.drawCircle(x,y,10,paint);        

    Bitmap b = BitmapFactory.decodeResource(getResources(),R.drawable.dam);                     
    canvas.drawBitmap(b, x, y, null);

}