Ich versuche, eine Anwendung in Android zu erstellen, in einer meiner Aktivitäten Ich möchte Vollbild-Bilder zeigen und sie nach links und rechts schieben, indem Sie Finger auf die Bilder gleiten.fullscreen ImageSwitcher ohne Galerie in Android
Ich habe grundlegende Galerieansicht und Bildumschalter ausprobiert, aber ich konnte nicht mit dem Berührungsereignis umgehen, um einen Gleiteffekt wie in der benutzerdefinierten Android-Galerie zu haben, aber ohne Thumbnails.
Hier ist meine einfache Image Switcher XML und Aktivitätsklasse. Ich würde sehr geschätzt werden, wenn jemand mir einen Weg zeigt oder meinen Code unten bearbeitet. Vielen Dank im Voraus ...
Layout xml:
<?xml version="1.0" encoding="utf-8"?>
<ImageSwitcher
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageSwitcher"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:onClick="imageClick"
android:src="@drawable/ic_launcher"
android:keepScreenOn="true">
</ImageSwitcher>
Code:
public class GalleryActivity extends Activity implements ViewFactory {
private ImageSwitcher imageSwitcher ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activities);
imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
imageSwitcher.setFactory(this);
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
imageSwitcher.setImageResource(R.drawable.menu);
imageSwitcher.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
findViewById(R.drawable.menu);
imageSwitcher.addView((ImageSwitcher) findViewById(R.drawable.etkinlik));
imageSwitcher.showNext();
return false;
}
});
}
public View makeView() {
ImageView iView = new ImageView(this);
iView.setScaleType(ImageView.ScaleType.FIT_CENTER);
iView.setLayoutParams(new
ImageSwitcher.LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
iView.setBackgroundColor(0xFF000000);
return iView;
}
}
Nach der Bearbeitung ein bisschen @imran khan ‚s Lösung, hier ist der Code, der recht gut funktioniert .
LÖSUNG:
ImageSwitcher imageSwitcher ;
Integer[] imageList = {
R.drawable.gallery,
R.drawable.menu,
R.drawable.promotion,
R.drawable.info,
R.drawable.activities
};
int curIndex=0;
int downX,upX;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activities);
imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
imageSwitcher.setFactory(this);
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
imageSwitcher.setImageResource(imageList[curIndex]);
imageSwitcher.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
downX = (int) event.getX();
Log.i("event.getX()", " downX " + downX);
return true;
}
else if (event.getAction() == MotionEvent.ACTION_UP) {
upX = (int) event.getX();
Log.i("event.getX()", " upX " + downX);
if (upX - downX > 100) {
//curIndex current image index in array viewed by user
curIndex--;
if (curIndex < 0) {
curIndex = imageList.length-1;
}
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(GalleryActivity.this,R.anim.slide_in_left));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(GalleryActivity.this,R.anim.slide_out_right));
imageSwitcher.setImageResource(imageList[curIndex]);
//GalleryActivity.this.setTitle(curIndex);
}
else if (downX - upX > -100) {
curIndex++;
if (curIndex > 4) {
curIndex = 0;
}
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(GalleryActivity.this,R.anim.slide_in_right));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(GalleryActivity.this,R.anim.slide_out_left));
imageSwitcher.setImageResource(imageList[curIndex]);
//GalleryActivity.this.setTitle(curIndex);
}
return true;
}
return false;
}
});
}
@Override
public View makeView() {
ImageView i = new ImageView(this);
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
return i;
}
Was passiert, wenn Sie diesen Code ausführen? –
Ich sehe nur das Bild auf dem gesamten Bildschirm und es endet bei Berührung.Ich habe eine Lösung für diese, aber ich habe ein anderes Problem, können Sie einen Blick, wenn Sie möchten. – osayilgan
ok osayilgan sehe meine Antwort und versuche es auf ImageSwitcher onTouch.i hoffe hilfreich –