Android обменивается двумя изображениями с анимацией - PullRequest
1 голос
/ 04 января 2012

Сначала извините за мою грамматику.

У меня есть два ImageViews, и я хочу обменяться изображениями друг с другом. Я знаю, что могу использовать setImageDrawable или setImageBitmap методы для изменения изображений, но это не совсем то, что я хочу. Я хочу, чтобы изображения менялись местами друг с другом. Я имею в виду с анимацией слайдов.

Что мне делать? Могу ли я продолжать использовать ImageView?

Например, у меня есть загадка http://upload.wikimedia.org/wikipedia/commons/thumb/9/91/15-puzzle.svg/220px-15-puzzle.svg.png

Представьте, что в пустой области 16, и я хочу поменять 12 мест на 16.

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Если на основе жеста, который собирается сделать пользователь, этот вопрос может вам помочь.

Для работы с анимацией этот учебник может помочь, и вы сосредоточитесь на использовании ViewFlipper . Это будет работать для всех видов компонентов или даже макетов.

Кроме того, я нашел эту ссылку , которая демонстрирует использование ViewFlipper с ImageViews и анимацией слайдов.

Надеюсь, это поможет!

0 голосов
/ 04 января 2012

Вы можете использовать кнопку, а затем применить анимацию.

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/btn1"
android:text="Button 1"
android:layout_width="fill_parent" 
android:layout_height="45dip" 
android:layout_marginTop="10dip"
/>

<Button
android:id="@+id/btn2"
android:text="Button 2"
android:layout_width="fill_parent" 
android:layout_height="45dip"
android:layout_marginTop="10dip" />

<Button
android:id="@+id/btn3"
android:text="Button 3"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="10dip"
/>

<Button
android:id="@+id/btn4"
android:text="Button 4"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="10dip"
/>
</LinearLayout>

Ваша деятельность

  import android.app.Activity;
  import android.os.Bundle;
  import android.view.animation.Animation;
  import android.view.animation.TranslateAnimation;
  import android.widget.Button;

  public class LayoutMargingActivity extends Activity 
  {
Button b1, b2, b3, b4;

TranslateAnimation left, right;
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    left = new TranslateAnimation(-480, 10, 0, 10);
    right= new TranslateAnimation( 480, 10, 0, 10);

    left.setDuration(2000);
    right.setDuration(2000);

    left.setRepeatCount( 1 );
    right.setRepeatCount( 1 );

    b1 =(Button)findViewById( R.id.btn1);
    b2 =(Button)findViewById( R.id.btn2);
    b3 =(Button)findViewById( R.id.btn3);
    b4 =(Button)findViewById( R.id.btn4);

    b1.startAnimation(left);
    b2.startAnimation(right);
    b3.startAnimation(left);
    b4.startAnimation(right);
}
}

Думаю, это тебе поможет.

0 голосов
/ 04 января 2012

Это может помочь вам:

Canvas and Drawables

API-интерфейсы платформы Android предоставляют набор API-интерфейсов для 2D-рисования, которые позволяют визуализировать вашииметь собственную графику на холсте или изменять существующие представления для настройки их внешнего вида.При рисовании 2D-графики вы обычно делаете это одним из двух способов:

  1. Рисуйте свою графику или анимацию в объекте View из своего макета.Таким образом, отрисовка вашей графики обрабатывается обычным системным процессом рисования иерархии представления - вы просто определяете графику, чтобы перейти внутрь представления.
  2. Нарисуйте вашу графику непосредственно на холсте.Таким образом, вы лично вызываете метод onDraw() соответствующего класса (передавая ему свой Canvas) или один из методов draw...() Canvas (например, drawPicture()).При этом вы также контролируете любую анимацию.
...