单个父视图中的多个子视图

时间:2011-04-25 12:15:34

标签: android view

我制作了两个视图类

在第一个视图类中我正在制作多个第二个视图的实例

并添加到第一个视图,但它只显示一个视图

请帮帮我..

这是父视图

package com.game.AntSmash;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.view.SurfaceView;
import android.widget.AbsoluteLayout;
import android.widget.LinearLayout;

public class surface extends LinearLayout {


    public surface(Context context) {
        super(context);
        this.setLayoutParams(new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT));
        this.setBackgroundDrawable(getResources().getDrawable(R.drawable.grass));
        Drawable d = getResources().getDrawable(R.drawable.ant_big);
        d.setBounds(160, 0, 160 + d.getIntrinsicWidth(), d.getIntrinsicHeight());
        this.addView(new antView(context, d, 0.2f, 0, 0, 0, 0, 0));
        d = getResources().getDrawable(R.drawable.ant_big);
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
            this.addView(new antView(context, d, 0.2f, 0, 0, 160, 0, 0));

    }
}

这是子视图

package com.game.AntSmash;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Picture;
import android.graphics.drawable.Drawable;
import android.text.BoringLayout.Metrics;
import android.view.View;
import android.widget.ImageView;

public class antView extends View {
    int screenW = 320;
    int screenH = 480;
    int X;
    int Y;
    int initialY ;
    int ballW;
    int ballH;
    int angle;
    float dY;
    float dX;
    float acc;
    int initialX;
    Drawable ball;


    public antView(Context context, Drawable bmp, float speed, int dx, int dy, int initialX, int initialY, int angle) {
        super(context); 
        this.ball = bmp;
        this.acc = speed;
        this.dX = dx;
        this.dY = dy;
        this.initialX = initialX;
        this.initialY = initialY;
        this.angle = angle;
    }

    @Override
    public void onDraw(Canvas canvas){
        super.onDraw(canvas); 

        //compute roughly ball speed and location
        Y+= (int) dY; //increase or decrease vertical position  
        if (Y > (screenH - ballH)) {
            dY=(-1)*dY; //reverse speed when bottom hit 
        }
        dY+= acc; //increase or decrease speed

        //compute roughly ball speed and location
        X+= (int) dX; //increase or decrease vertical position  
        if (X > (screenW - ballW)) {
            dX=(-1)*dX; //reverse speed when bottom hit 
        }
        dX+= acc / 5; //increase or decrease speed


        //increase rotating angle
        if ((angle = angle + 10) >360) angle =0;

        //draw ball
        canvas.save(); //save the position of the canvas
        canvas.rotate(angle, X + (ballW / 2), Y + (ballH / 2)); //rotate the canvas
        canvas.translate(X, Y);
        ball.draw(canvas);
        canvas.restore(); //rotate the canvas back so that it looks like ball has rotated


        //call the next frame
        if(X > screenW - ballW && Y > screenH - ballH) {

        } else {
            invalidate();
        }

    }

}

这是活动

package com.game.AntSmash;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.LinearLayout;

public class AntSmashActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout v = new surface(this);
        setContentView(v);

    }
}

1 个答案:

答案 0 :(得分:1)

您需要为LinearLayout父级设置一些布局参数,也可以使用setOrientation()来定义子视图的显示方式。

孩子的维度可能太大了。

如果你想使用2D绘图,我建议我写一篇tutorial series。与使用视图和布局相比,使用SurfaceView进行2D绘图更容易。

最后的提示:类名称应以大写字母开头。 SurfaceAntView代替surfaceantView