Перемещение изображения через линейный макет - PullRequest
1 голос
/ 20 февраля 2011

Я занимаюсь разработкой приложения для Android 2.2.

Я хочу переместить изображение с левой стороны экрана на правую часть экрана.

Как я могу это сделать? Я прочитал, что мне нужно добавить это изображение в ListView или GridView, чтобы настроить эту анимацию.

UPDATE

Я создал следующие файлы:

аним / translate_right

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <translate
        android:fromXDelta="-100%p"
        android:toXDelta="0"
        android:duration="5000" />
</set>

аним / ship_layout_controller

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
        android:delay="10%"
        android:animationOrder="reverse"
        android:animation="@anim/translate_right" />

макет / * 1020 стартовой *

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <TextView 
        android:id="@+id/appNameTextView"
        android:text="@string/app_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="40px"/>
    <Button
        android:id="@+id/PlayButton"
        android:text="@string/play"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="40px"/>
    <AbsoluteLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <ImageView
            android:id="@+id/greekShip"
            android:persistentDrawingCache="animation|scrolling"
            android:layoutAnimation="@anim/ship_layout_controller"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/greekship"
            android:maxWidth="176px"
            android:maxHeight="87px"
            android:layout_x="-300px"/>
    </AbsoluteLayout>
</LinearLayout>

StartActivity.java

public class StartActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.startpage);
    }

    @Override
    protected void onResume() {
        super.onResume();
        ImageView ship = (ImageView)findViewById(R.id.greekShip);

        ship.startAnimation(AnimationUtils.loadAnimation(this, R.anim.translate_right));
    }
}

Но это не работает.

Ответы [ 4 ]

3 голосов
/ 15 мая 2013

Вы должны использовать Перевести анимацию . Например, эта анимация переместит изображение с левой стороны экрана на правую часть экрана.

Активность анимации

    listener = new AnimationListener() {
        @Override 
        public void onAnimationStart(Animation animation) {}
        @Override 
        public void onAnimationRepeat(Animation animation) {}
        @Override
        public void onAnimationEnd(Animation animation) {
            System.out.println("End Animation!");
            //load_animations();
        }
    };

     }
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    if (v==button)
    {
        moveLefttoRight = new TranslateAnimation(0, 200, 0, 0);
        moveLefttoRight.setDuration(1000);
        moveLefttoRight.setFillAfter(true);
        my_image.startAnimation(moveLefttoRight);
    }
    }

  }

XML-код

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<ImageView 
   android:id="@+id/diceid"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/dice"/>

</LinearLayout>

и anim Файл

  <?xml version="1.0" encoding="utf-8"?>
  <rotate
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromDegrees="0"
   android:toDegrees="360"
   android:pivotX="50%"
   android:pivotY="50%"
   android:duration="2000"
   android:repeatMode="reverse"
   android:repeatCount="infinite"
   android:startOffset="0"
  />

может быть, это ответ на вопрос, который вы ищете.

3 голосов
/ 21 февраля 2011

Пожалуйста, обратите внимание на класс Animation , в частности Tween Animation , более конкретно Translate Translate .Создайте файл анимации в своем проекте и примените эту анимацию к своему изображению.Например, эта анимация будет перемещать объект из центра экрана вправо.

<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:toXDelta="100%p"
    android:fromXDelta="0%"
    android:duration="300" 
    android:fillEnabled="true" 
    android:fillAfter="true">
</translate>

РЕДАКТИРОВАТЬ: Чтобы применить эту анимацию к кнопке, TextView, ImageViewи т. д.

ImageView imageView = (ImageView) findViewById(R.id.myImageView);
Animation exitAnimation = AnimationUtils.loadAnimation(this, R.anim.exit_animation);
imageView.startAnimation(exitAnimation);
0 голосов
/ 21 февраля 2011

Или это Галерея , которую вы ищете?

0 голосов
/ 20 февраля 2011

Я бы снова проверил ваш источник.Может быть, это вне контекста.Но самый простой способ сделать это - использовать анимацию «Перевести», которая берется из начальной точки изображения и переводит ее на другую сторону экрана.После того, как это сделано, я обычно регистрирую обратный вызов анимации, чтобы я мог обновить истинную позицию изображения после завершения анимации.надеюсь, что это поможет.

...