ViewFlipper의 기본 사용(뒤집기 보기)
이 섹션 소개:
이 섹션에서는 Android와 함께 제공되고 자동으로 재생할 수 있는 다중 페이지 관리 컨트롤인 ViewFlipper를 소개합니다! ViewPager와 달리 ViewPager는 레이어 단위인 반면 ViewFlipper는 ViewPager와 마찬가지로 레이어 단위입니다. 애플리케이션 진입 후 가이드 페이지를 구현하거나 이미지 캐러셀을 위해 사용됩니다. 이 섹션에서는 ViewFlipper를 사용하여 간단한 이미지를 작성하겠습니다. Carousel의 예~공식 API: ViewFlipper
1. ViewFlipper에 View를 추가하는 두 가지 방법
1) Static import
소위 static import는 그림과 같이 ViewFlipper에 각 페이지를 추가하는 것입니다. 중간!
2) addView 메소드
2를 통해 View를 채우기 위해 동적으로
을 가져옵니다. 2. 일반적으로 사용되는 일부 메소드
- setInAnimation: 진입 시 사용되는 뷰 화면 애니메이션
- setOutAnimation: 뷰가 화면을 종료할 때 사용되는 애니메이션을 설정합니다.
- showNext: ViewFlipper에서 다음 뷰를 표시하려면 이 메소드를 호출하세요.
- showPrevious: 이전 뷰를 표시하려면 이 메소드를 호출하세요. ViewFlipper
- setFilpInterval : 뷰 간 전환을 위한 시간 간격을 설정합니다.
- setFlipping: 위에 설정된 시간 간격을 사용하여 모든 뷰 전환을 시작하면 전환이
- stopFlipping으로 순환됩니다. 뷰 전환 중지
3. 사용 예
1) 예 1: ViewFlipper를 사용하여 이미지 캐러셀 구현(정적 가져오기)
구현 렌더링:
구현 코드:
각 페이지의 레이아웃은 간단합니다. ImageView는 이제 더 이상 올리지 않겠습니다~ 다음 두 글을 먼저 올리고, 애니메이션 종료:
right_in.xml:
<set xmlns:android="http://schemas.android . com/apk/res/android">
lt;/ set>
right_out.xml:
<set xmlns:android="http://schemas.android.com/apk/ res/android" >
<translate
android:duration="2000"
android:fromXDelta="0"
android:toXDelta="-100%p" />
</set>
然后是activity_main.xml布局文件:
xmlns:tools="http://schemas. android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ViewFlipper
android:id="@+id/vflp_help" ㅋㅋㅋ 간격="3000">
<include layout="@layout/page_help_one" />
<include layout="@layout/page_help_two" />
<include layout="@layout/page_help_two" />
< include layout="@layout/page_help_four" />
</ViewFlipper>
</RelativeLayout>
여기서는 FlipInterval = 3000으로 설정했습니다. 즉, 3000ms마다 뒤집는다는 의미입니다~ 마지막으로, 슬라이딩을 시작하려면 MainActivity.java에 있는 ViewFlipper의 startFlipping() 메서드만 호출하면 됩니다!
MainActivity.java:
private ViewFlipper vflp_help;
@Override
protected void onCreate(Bundle selectedInstanceState) {
super.onCreate(savedState);
setContentView(R.layout. Activity_main);
vflp_help = (ViewFlipper) findViewById(R.id.vflp_help);
vflp_help.startFlipping();
}
}
2) 예시 2: 제스처 슬라이딩(동적 가져오기)을 지원하는 ViewFlipper
구현 렌더링 :
코드 구현 :
이전 페이지 진입과 다음 페이지 진입으로 나누어지기 때문에 위의 두 애니메이션 외에
left_in 애니메이션 두 개를 더 추가합니다. xml:
<set xmlns:android="http://schemas.android.com/apk/res/ android" >
<translate
android:duration="500"
android:fromXDelta="-100%p"
android:toXDelta="0" />
</set>
left_out. xml:
<set xmlns:android="http://schemas.android.com/apk/res/ Android " & gt;
& lt; 번역
android: 기간 =" 500 "
android: fromxdelta =" 0 "
Android: toxdelta =" 100%p "/& gt;
MainActivity.java:
R.mipmap.ic_help_view_3,R.mipmap. ic_help_view_4};
private final static int MIN_MOVE = 200; //最小距离
private MyGestureListener mgListener;
private GestureDetector mDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity. this;
//实例化SimpleOnGestureListener与GestureDetector对象
mgListener = new MyGestureListener();
mDetector = new GestureDetector(this, mgListener);
vflp _help = (ViewFlipper) findViewById(R.id.vflp_help);
//动态导入添加子View
for(int i = 0;i <resId.length;i++){
vflp_help.addView(getImageView(resId[i]));
}
}
//중복onTouchEvent触发MyGestureListener里적방법
@Override
public boolean onTouchEvent(MotionEvent event) {
return mDetector.onTouchEvent(event);
}
//自정义一个GestureListener,这个是보기类下的,别写错哦!!!
개인 클래스 MyGestureListener는 GestureDetector.SimpleOnGestureListener를 확장합니다. if(e1.getX() - e2.getX() > MIN_MOVE){
vflp_help.setInAnimation(mContext,R.anim.right_in);
vflp_help.setOutAnimation(mContext, R.anim.right_out);
vflp_help.showNext ();
8 .setOutAnimation(mContext, R.anim.left_out );
vflp_help.showPrevious();
}
return true;
}
}
비공개 ImageView getImageView(int resI d){
ImageView img = new ImageView(this);
img.setBackgroundResource(resId);
return img ;
}
}
코드 포인트 분석:
여기서 동적 방법을 통해 View를 추가합니다. 여기에는 필요에 따라 확장할 수 있는 간단한 ImageView가 있습니다. 2. 나는 당신이 주의 깊게 여기에서 우리의 제스처가 onTouchEvent를 통해 직접 판단되지 않고 다시 작성된다는 것을 발견했다고 믿습니다. onTouch 이벤트로 Action을 판단하고 MotionEvent.ACTION_MOVE이면 다음 코드를 실행합니다
나중에 보니 마우스이기 때문에 시뮬레이터가 자주 흔들리지 않는데요. 진짜폰, 항상 손가락이 떨리거든요 그래서 ACTION_MOVE는 항상 실행되고 View는 계속 전환됩니다. 나중에 Berial(B神)의 제안을 고려하여 추가했습니다. 값으로 판단하려면 플래그를 추가하면 됩니다.
예, 가능하지만 여전히 약간 매끄럽지 않고 이상하게 느껴집니다. 나중에 생각하고 제스처 클래스를 사용하여 처리했습니다. onFling에서 직접 확인해보세요. 이상, 위와 같은 코드가 있는데, 신기하게도 실행되네요~ 물론, 제스처 제스처에 익숙하지 않다면 이전에 제가 쓴 글을 참고하시면 됩니다: Android 튜토리얼 기본 소개 - 3.8 제스처(Gesture)
4. 코드 샘플 다운로드
ViewFlipperDemo.zip
ViewFlipperDemo2.zip
이 섹션 요약:
좋습니다. 이 섹션에서는 ViewFlipper(플립 보기)의 기본 사용법을 설명하고 나중에 이미지 캐러셀과 가이드 페이지를 만듭니다. 선택이 하나 더 남았네요~ 그럼 그걸로 됐네요, 감사합니다~