2014-04-23 45 views
0

我已經創建了一個自定義的XML佈局,並且試圖將地圖背景和典當玩家(位圖)繪製在其上。我想知道如何在我的XML佈局上使用畫布繪製

取而代之的是,它在白色背景上繪製了棋子播放器,而沒有將背景放在XML文件中的地圖背景。

MyViev Class: 

package com.example.alpha; 


import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.util.AttributeSet; 
import android.view.View; 

public class MyView extends View { 
    Bitmap playerW; 
    float changingY; 
    float changingX; 
    public MyView(Context context) { 
     super(context); 
     playerW = BitmapFactory 
       .decodeResource(getResources(), R.drawable.black); 
     changingY=0; 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     canvas.drawBitmap(playerW,4+changingX, (canvas.getHeight())-288-changingY, null); 
    } 

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     // TODO Auto-generated constructor stub 
    } 

    public MyView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

} 

my MainActivity Class: 

package com.example.alpha; 


import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 


public class MainActivity extends ActionBarActivity { 
    MyView ourView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ourView = new MyView(this); 
     setContentView(ourView); 

    } 
} 

My XML file: 

<?xml version="1.0" encoding="utf-8"?> 
<view class="com.example.alpha.MyView" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/mapeasy" 
/> 

回答

0

這是因爲您實際上沒有設置它來使用您的XML佈局。相反,您已將內容View設置爲MyView的新實例,該實例沒有XML背景屬性集。

爲此你有2種選擇:

選項1:調用ourView.setBackgroundDrawable(R.drawable.mapeasy);在創建MyView的新實例之後。

選項2:設置內容視圖是你的實際佈局文件,然後找到使用findViewById(INT)您的MyView的。

例如,

public class MainActivity extends ActionBarActivity { 
    MyView ourView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_layout_file); 
     ourView = (MyView)findViewById(R.id.myView); 
    } 
}