试图绘制动画位图,而不是工作

时间:2013-10-11 00:56:56

标签: java android

好吧,我基本上只想弄清楚如何绘制一个在屏幕上移动然后从那里拿走的图像。我已经完成了一些关于绘图,使用绘画,onDraw()等的教程,并且已经在网上搜索了一段时间,但我不确定我做错了什么。基本上应用程序加载正常,它导航到页面,但从不绘制图像。我错过了一些愚蠢的东西。

这是myclass“BlackJack”,它是Activity类。

public class BlackJack extends Activity {
BlackJackDrawCard newCard;
Deck deck;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_black_jack);
    deck = new Deck(this.getResources());
    deck.shuffle();
    newCard = new BlackJackDrawCard(this, deck.getCard(4) );
}

BlackJackDrawCard就是这个类,我实际上在那里画卡:

public class BlackJackDrawCard extends View{

    Bitmap card;
    float x, y;
    public BlackJackDrawCard(Context context, Bitmap i) {
        super(context);
        card=i;
        x=0;
        y=0;

    }
    @Override
    public void onDraw(Canvas canvas){

        canvas.drawBitmap(card, x, y, null);
        x+=5;
        y+=5;
        invalidate();
    }


}
“deck”是我的班级,显然是卡片组。它包含一个52个卡的arrayList,每个卡的值为“img”,它有各自的位图图像。 deck.getCard(i)返回卡的位图图像。

1 个答案:

答案 0 :(得分:1)

您可能需要考虑以下几点:

如果BlackJackDrawCard的目的是绘制图像,那么从ImageView扩展它不是更好吗?

此外,你不应该在onDraw方法中调用invalidate - 它会导致无限的绘图循环。

如果您要以这种方式创建视图,则需要设置其布局参数。确保视图将显示您给出的整个位图的一种方法是将布局参数设置为宽度和宽度。位图的高度:

public BlackJackDrawCard(Context context, Bitmap i) 
    {
        super(context); 

        card = i;

        setLayoutParams(new RelativeLayout.LayoutParams(card .getWidth(), card .getHeight())); // Assuming the view will be inside a relative layout.
    }

为了对视图进行动画处理,最好使用动画类。这是一个例子:

(在你的活动课内:)

public void animateCard(BlackJackDrawCard card, int amountToMoveRight, int amountToMoveDown)
{
    TranslateAnimation animation = new TranslateAnimation(0, amountToMoveRight, 0, amounttoMoveDown);
    animation.setDuration(1000); // duration in millisec

    card.startAnimation(animation);
}

希望这有助于您入门:)