나는 내 액티비티 중 하나에서 안드로이드로 어플리케이션을 만들려고합니다. 전체 화면 이미지를 보여주고 그림을 손가락으로 움직여 좌우로 슬라이드시키고 싶습니다.전체 화면 이미지 갤러리 안드로이드 안드로이드 ImageSwitcher
기본 갤러리보기 및 이미지 전환기를 사용해 봤지만 맞춤형 Android 갤러리에서와 같이 축소판없이 슬라이드 이벤트를 처리 할 수 없습니다.
내 간단한 이미지 스위처 xml 및 활동 클래스는 다음과 같습니다. 아무도 내 방식을 보여 주거나 아래 코드를 편집하면 매우 감사하겠습니다. 사전에 감사합니다 ...
레이아웃 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>
코드 :
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;
}
}
@imran 칸의 솔루션을 조금 편집 한 후, 여기에 아주 잘 작동 코드가 .
해결책 :
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;
}
이 코드를 실행하면 어떻게됩니까? –
난 그냥 전체 화면에서 이미지를보고 touch.I에 대한 해결책을 게시하지만 난 다른 문제가 생겼어, 당신이 원한다면 볼 수 있습니다. – osayilgan
ok osayilgan이 내 대답을보고 ImageSwitcher onTouch.i에서 시도해보십시오. 도움이 되었으면 좋겠습니다. –