我已经创建了一个自定义XML布局,我正在尝试在其上绘制地图背景和pawn播放器(位图)。
相反,它在白色背景上绘制典当玩家而没有我在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 :(得分:0)
这是因为您实际上没有将其设置为使用XML布局。相反,您已将内容View设置为MyView的新实例,该实例未设置XML背景属性。
因此,您有两个选择:
选项1 :调用myView.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);
}
}