我正在开发一款小游戏。但是,我希望我的activity
拥有XML的内容视图,但也希望它显示我稍后创建的视图。
这是我的代码:
public class GameView extends Activity{
MediaPlayer backgroundMusic;
TextView mTextField;
int Px = 0;
int Py = 0;
Point size = new Point();
Display display;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//setContentView(new myView(this));
setContentView(R.layout.gameviewlayout);
mTextField = (TextView)findViewById(R.id.timer1);
new CountDownTimer(45000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("Seconds Remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
display = getWindowManager().getDefaultDisplay();
display.getSize(size);
int width = size.x;
int height = size.y;
backgroundMusic = MediaPlayer.create(GameView.this, R.raw.gallery_music);
backgroundMusic.start();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
backgroundMusic.release();
}
private class myView extends View{
public myView(Context context) {
super(context);
}
@SuppressLint("DrawAllocation")
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.lil_peanut);
canvas.drawBitmap(Bitmap.createScaledBitmap(bm, 83, 131, false), Px, Py, null);
}
}
}
所以我想要setContentView(new myView(this));
和SetContentView(R.layout.gameviewlayout);
我该如何做到这一点?
答案 0 :(得分:0)
这个问题经常被问到(可能会有愚蠢)。看看this的开始 - 这基本上就是你想要的。
与更重要的事情一样,有很多方法可以做到这一点。我的首选方式是:
1。)在布局文件ID中提供根视图。这是不必要的,请参阅here,但SDK旨在鼓励您尽可能使用findViewById,并且它(理论上)应该更快。
2.。)您的根视图应该是ViewGroups的实例,特殊情况除外。
3。)一旦你有了对视图的引用,就可以使用documentation中详述的addView
- 这会将视图作为“子”添加到你的布局中得到了。
4.。)Android使用LayoutParameters
来衡量和绘制视图。因此,您需要在新视图中设置xxxLayout.LayoutParams(...)
,对我来说最好的设计是在添加时进行设置。但要注意!添加到布局的视图需要具有正确的布局参数 - 将“xxx”替换为“Linear”或“Relative”。但是,如果您要将LinearLayout
添加到RelativeLayout
,则要设置相对布局参数 - 因为测量人员确实需要了解每个视图的“访问次数” “与上面的容器有关。请记住,如果您使用import
而不是更多“合格的类名”,则应导入右。两个人混在一起让我不时地和我一起玩这个游戏。