Android: Как реализовать переход к следующему ImageView, выполняя быстрый слайд по вертикали?(Предоставлены все исходные коды) - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть около 20 изображений. Я создал кнопки для каждого изображения и одного ImageView. При нажатии кнопки соответствующее изображение будет установлено в ImageView с включенным масштабированием и перетаскиванием. Затем замените его, нажав другую кнопку, чтобы перейти к следующему / предыдущему изображению.

Теперь мне нужно удалить кнопки и заменить их, осуществив быстрый слайд по вертикали . Когда я делаю быстрый слайд снизу вверх, он переходит к следующему изображению . Затем быстро переместите сверху вниз, чтобы перейти к предыдущему изображению . Также отключите его, если они достигают первого или последнего изображения .

Я думаю о ListView ImageView для обработки изображений. Затем реализуйте функцию быстрого скольжения, поддерживая индекс текущего ImageView в списке.

Высоко ценится любое руководство в правильном направлении о том, как реализовать быструю слайд-страничку с помощью Android 2.1 .

UPDATES1 Я успешно использую слайдер ImageSwitcher вверх и вниз с помощью кнопки (Next, Prev). Моя следующая проблема заключается в том, как реализовать это с помощью быстрого перемещения для перемещения вперед и назад. Я добавлю текущие коды.

ПРИМЕЧАНИЕ: Класс TouchImageView поддерживает масштабирование и перетаскивание. При медленном скольжении изображение будет перетаскиваться в этом направлении, но когда я делаю быстрое скольжение вверх или вниз, мне хочется переместиться к следующему и предыдущему изображению соответственно.

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"
    >
    <ImageSwitcher android:id="@+id/switcher1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_weight="0"
    />
    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">
        <Button android:id="@+id/next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Next"/>
        <Button android:id="@+id/previous"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Prev"/>
    </LinearLayout>

</LinearLayout>

Активность: (Примечание: TouchImageView получено из RecipeBook060 Увеличение и перетаскивание Extended ImageView , идея слайд-изображений, полученная из Слайд-изображение )

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ViewSwitcher.ViewFactory;

public class ImageSwticherActivity extends Activity 
    implements ViewFactory {
    Integer[] imageIDs = { R.drawable.image_one, R.drawable.image_two,
            R.drawable.image_three };

    private ImageSwitcher imageSwitcher;
    private Button nextButton;
    private Button previousButton;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final Animation in = AnimationUtils.loadAnimation(this,
                android.R.anim.slide_in_left);
        final Animation out = AnimationUtils.loadAnimation(this,
                android.R.anim.slide_out_right);

        imageSwitcher = (ImageSwitcher) findViewById(R.id.switcher1);
        imageSwitcher.setFactory(this);
        imageSwitcher.setInAnimation(in);
        imageSwitcher.setOutAnimation(out);

        imageSwitcher.setImageResource(imageIDs[0]);     
        nextButton = (Button) findViewById(R.id.next);    
        nextButton.setOnClickListener(new OnClickListener() {       
            public void onClick(View v) {  
                Animation out= AnimationUtils.loadAnimation(ImageSwticherActivity.this, R.anim.slide_out_bottom);     
                Animation in= AnimationUtils.loadAnimation(ImageSwticherActivity.this, R.anim.slide_in_top);   

                imageSwitcher.setInAnimation(in);    
                imageSwitcher.setOutAnimation(out);        
                imageSwitcher.setImageResource(imageIDs[1]);     
            }    
        });   

        previousButton = (Button) findViewById(R.id.previous);     
        previousButton.setOnClickListener(new OnClickListener() { 
            public void onClick(View v) {  
                Animation out= AnimationUtils.loadAnimation(ImageSwticherActivity.this, R.anim.slide_out_top);     
                Animation in= AnimationUtils.loadAnimation(ImageSwticherActivity.this, R.anim.slide_in_bottom);   
                imageSwitcher.setInAnimation(in);    
                imageSwitcher.setOutAnimation(out);  
                imageSwitcher.setImageResource(imageIDs[0]);     
            }   
        }); 

    }

    @Override
    public View makeView() {
        //ImageView imageView = new ImageView(ImageSwticherActivity.this);
        TouchImageView imageView = new TouchImageView(ImageSwticherActivity.this);
        imageView.setBackgroundColor(0xFF000000);
        //imageView.setScaleType(ImageView.ScaleType.CENTER);
        imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
                ImageSwitcher.LayoutParams.FILL_PARENT, ImageSwitcher.LayoutParams.FILL_PARENT));
        return imageView;
    }

}

slide_in_bottom.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="-50%p" android:toYDelta="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
</set>

slide_in_top.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromYDelta="50%p" android:toYDelta="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
        <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
</set>

slide_out_bottom.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromYDelta="0" android:toYDelta="-50%p"
            android:duration="@android:integer/config_mediumAnimTime"/>
        <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
            android:duration="@android:integer/config_mediumAnimTime" />
</set>

slide_out_top.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0" android:toYDelta="50%p"
            android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
            android:duration="@android:integer/config_mediumAnimTime" />
</set>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...