2013-10-11 2 views
0

Хорошо, я просто пытаюсь понять, как рисовать изображение, которое перемещается по экрану, а затем берет его оттуда. Я просмотрел пару руководств по рисованию, используя paint, 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(); 
    } 


} 

«палуба» мой класс, который, очевидно, колода карт. Он содержит массивList из 52 карт каждый со значением «img», который имеет соответствующее растровое изображение. deck.getCard (i) возвращает растровое изображение карты.

ответ

1

Несколько вещей здесь вы можете рассмотреть:

Если цель BlackJackDrawCard это нарисовать изображение, не было бы лучше, чтобы он простирается от ImageView?

Кроме того, вы не должны вызывать invalidate внутри метода onDraw - это вызовет бесконечный цикл рисования.

Если вы собираетесь создать представление таким образом, вам нужно будет установить его параметры макета. Способ, чтобы убедиться, что представление будет отображать всю битовую карту вы даете его, чтобы установить Params макет, ширину & высоту битовой карты:

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

Надеется, что это помогает вам начать :)

+0

Ничего себе, что на самом деле делает много смысла для меня! Благодаря! –

Смежные вопросы