gpt4 book ai didi

java - 尝试绘制动画位图,但不起作用

转载 作者:行者123 更新时间:2023-12-01 14:01:42 25 4
gpt4 key购买 nike

好吧,我基本上只是想弄清楚如何绘制在屏幕上移动的图像,然后从那里获取它。我已经学习了一些关于绘图、使用 Paint、onDraw() 等的教程,并且在网上搜索了一段时间,但不确定我做错了什么。基本上,应用程序加载良好并导航到页面,但从未绘制图像。可能是我错过了一些愚蠢的事情。

这是我的类“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();
}


}

“甲板”是我的类(class),显然是一副纸牌。它包含一个包含 52 张卡片的数组列表,每个卡片的值为“img”,即各自的位图图像。 Deck.getCard(i) 返回卡片的位图图像。

最佳答案

您可能需要考虑以下几件事:

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

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

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

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.
}

为了使 View 动画化,最好使用动画类。这是一个例子:

(在您的 Activity 类中:)

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);
}

希望这可以帮助您入门:)

关于java - 尝试绘制动画位图,但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19308607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com