안내 페이지의 슬라이딩 진입을 환영합니다
public class WelcomeActivity extends Activity {
private final int[] imageIDs = new int[]{R.mipmap.guide_image_01, R.mipmap.guide_image_02,
R.mipmap.guide_image_03};
private volatile boolean isLastPage;//viewPager
@ViewInject(R.id.viewPager)// findViewByID
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
startGuidePage();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
/**
*
*/
private void startGuidePage() {
List views = new ArrayList<>();
ImageView imageView;
for (int i = 0; i < imageIDs.length; i++) {
imageView = new ImageView(this);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
imageView.setImageResource(imageIDs[i]);
imageView.setLayoutParams(params);
if (i == imageIDs.length - 1) {
//
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
goMainActivity();
}
});
}
views.add(imageView);
}
viewPager.setVisibility(View.VISIBLE);
viewPager.setAdapter(new GuideAdapter(views));
final EdgeEffectCompat edgeEffectCompat = getEdgeEffectCompat(viewPager);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
AtomicBoolean isGoMainActivity = new AtomicBoolean(false);
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
isLastPage = position == imageIDs.length - 1;
}
@Override
public void onPageScrollStateChanged(int state) {
boolean isIdleState = (state == ViewPager.SCROLL_STATE_IDLE);//viewPager
if (isLastPage && isIdleState &&// ( )
edgeEffectCompat != null && !edgeEffectCompat.isFinished()// viewPager
&& isGoMainActivity.compareAndSet(false, true))//
//
goMainActivity();
}
});
}
/**
* viewPager
*/
private EdgeEffectCompat getEdgeEffectCompat(ViewPager viewPager) {
EdgeEffectCompat edgeEffectCompat = null;
try {
Field mRightEdge = viewPager.getClass().getDeclaredField("mRightEdge");
mRightEdge.setAccessible(true);
edgeEffectCompat = (EdgeEffectCompat) mRightEdge.get(viewPager);
} catch (Exception e) {
e.printStackTrace();
}
return edgeEffectCompat;
}
/**
*
*/
private void goMainActivity() {
startActivity(new Intent(this, MainActivity.class));
finish();
}
}
프로젝트의 원인으로 인해 안내 페이지 그림을 업로드하지 않겠습니다. 그리고 가이드 어댑터도 복사했습니다. 코드의 일반적인 상황을 저는 주석을 별로 좋아하지 않습니다.
public class GuideAdapter extends PagerAdapter {
private List views;
public GuideAdapter(List views){
this.views=views;
}
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(views.get(position));
return views.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(views.get(position));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.