Android 는 그 라 데 이 션 시작 페이지 와 표시 기 가 있 는 안내 페이지 를 실현 합 니 다.

안내 페이지 는 프로젝트 에서 흔히 볼 수 있 는 것 입 니 다.사용자 가 app 을 다운로드 한 후에 처음으로 안내 인터페이스 에 들 어 갑 니 다.보통 서 너 장의 그림 설명 입 니 다.app 의 기능 과 사용 방법 등 을 간단하게 소개 합 니 다.마지막 으로'응용 프로그램 에 들 어가 기'버튼 이 있 으 면 홈 페이지 에 들 어 갈 수 있 습 니 다.그 다음 에 app 을 열 면 다시 시작 페이지 에 들 어가 지 않 습 니 다.말 이 많 지 않 습 니 다.다음은 귀납 을 한다.
효과 그림:

실현 절차:
1.우선 그 라 데 이 션 애니메이션 의 시작 페이지 SplashActivity 를 만 듭 니 다.
onCreate 에 핵심 방법 설정 setAlphaAnimation()

public void setAlphaAnimation(){

   //  AlphaAnimation   

   AlphaAnimation animation= new AlphaAnimation(this);

   //         

   animation.setDuration(3000);

   //           ,   imageview,textview,linearLayout   

   ll.setAnimation(animation);

   //      ,           (          ,      )

   animation.setAnimationListener(new Animation.AnimationListener(){

      public void onAnimationStart(Animation animation){ }

      public void onAnimationEnd(Animation animation){ 

         jump2Activity();      

      }

      public void onAnimationRepeat(Animation animation){ }

   });

}
이 점프 방법 을 분석 해 보 세 요.저 희 는 Shared Peference 를 사용 하여 응용 프로그램 이 처음 열 렸 는 지 여 부 를 판단 합 니 다.변수 isFirst 기본 값 을 0 으로 설정 하고 안내 페이지 에 들 어 갈 때 이 값 을 1 로 설정 합 니 다.그러면 매번 점프 할 때마다 isFirst 의 값 을 판단 합 니 다.기본 값 0 이면 처음으로 안내 페이지 에 들 어가 고 반대로 홈 페이지 에 들 어 갑 니 다.

public void jump2Activity(){

  SharedPreferences sharedPreference= getSharedPreferences("data", MODE_PRIVATE);

  String isFirst= sharedPreferences.getString("isFirst", "0");

  Intent intent= new Intent();  

  if("0".equals(isFirst)){

    intent.setClass(this, GuideActivity.class);

  }else{

    intent.setClass(this. MainActivity.class);

  }

  startActivity(intent);

  finish();

}
2.다음은 안내 페이지 를 만 들 겠 습 니 다.
안내 페이지 는 세 개의 컨트롤 로 구성 되 어 있 습 니 다.Viewpager,원점 표시 기의 선형 레이아웃 linearlayout, 마지막 페이지 의"응용 프로그램 진입" 버튼

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 
 <android.support.v4.view.ViewPager
  android:id="@+id/guide_vp"
  android:layout_width="match_parent"
  android:layout_height="match_parent" />
 
 <LinearLayout
  android:id="@+id/guide_ll"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  android:layout_centerHorizontal="true"
  android:layout_marginBottom="100dp"
  android:orientation="horizontal" />
 
 <Button
  android:id="@+id/guide_btn"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_above="@id/guide_ll"
  android:layout_centerHorizontal="true"
  android:text="    "
  android:layout_marginBottom="10dp"
  android:visibility="gone"/>
 
</RelativeLayout>
GuideActivity 에서 먼저 안내 그림 을 초기 화 합 니 다.

/**
 *      
 */
private void initImgs() {
 ViewPager.LayoutParams params= new ViewPager.LayoutParams();
 imageViews= new ArrayList<ImageView>();
 for (int i= 0; i< imgs.length; i++){
  ImageView imageView= new ImageView(this);
  imageView.setLayoutParams(params);
  imageView.setImageResource(imgs[i]);
  imageView.setScaleType(ImageView.ScaleType.FIT_XY);
  imageViews.add(imageView);
 }
}
아래쪽 원점 표시 기 를 초기 화 합 니 다.여기 서 언급 할 만 한 것 은 우리 가 각 원점 에 해당 하 는 클릭 이 벤트 를 설정 하 는 것 입 니 다.특정한 위치의 원점 을 클릭 할 때 viewpager 는 해당 위치 에 있 는 그림 으로 자동 으로 전환 합 니 다.그러나 실제 응용 에서 여 기 는 실용성 이 크 지 않 습 니 다.원점 이 너무 작 아서 터치 범위 가 제한 되 어 있 기 때문에 이 벤트 를 클릭 하면 터치 하기 가 쉽 지 않 습 니 다.

/**
 *           
 */
private void initDots() {
 LinearLayout layout= findViewById(R.id.guide_ll);
 LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(20, 20);
 params.setMargins(10, 0, 10, 0);
 dotViews= new ImageView[imgs.length];
 for (int i= 0; i< imageViews.size(); i++){
  ImageView imageView= new ImageView(this);
  imageView.setLayoutParams(params);
  imageView.setImageResource(R.drawable.dotselector);
  if (i== 0){
   imageView.setSelected(true);
  }else{
   imageView.setSelected(false);
  }
  dotViews[i]= imageView;
  final int finalI = i;
  dotViews[i].setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
    vp.setCurrentItem(finalI);
   }
  });
  layout.addView(imageView);
 }
}
viewpager 의 미끄럼 이벤트 설정

vp.addOnPageChangeListener(this);
세 가지 방법 을 생 성 합 니 다.저 희 는 주로 onPageSelected()방법 에서 동작 합 니 다.특정한 위치의 원점 이 선택 되 었 을 때 선 택 된 그림 을 표시 하고 나머지 원점 은 선택 되 지 않 은 그림 을 표시 합 니 다.여 기 는 주로 selector 컨트롤 러 를 사용 합 니 다.해당 선택 되 지 않 은 원점 그림 은 여러분 이 찾 아야 합 니 다.마지막 페이지 로 미 끄 러 질 때"응용 프로그램 에 들 어 갑 니 다" 의 단 추 를 표시 합 니 다.반대로 숨 깁 니 다.

@Override
public void onPageScrolled(int i, float v, int i1) {}
 
@Override 
public void onPageScrollStateChanged(int i) {}
 
@Override
public void onPageSelected(int arg0) {
 for (int i= 0; i< dotViews.length; i++){
  if (arg0== i){
   dotViews[i].setSelected(true);
  }else {
   dotViews[i].setSelected(false);
  }
 
  if (arg0== dotViews.length- 1){
   btn.setVisibility(View.VISIBLE);
  }else {
   btn.setVisibility(View.GONE);
  }
 }
}
dotSelector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@drawable/focus_on" android:state_selected="true"/>
 <item android:drawable="@drawable/focus_nomal" android:state_selected="false"/>
</selector>
마지막 페이지 에서"애플 리 케 이 션 진입"을 누 르 십시오. 단 추 를 누 르 면 홈 페이지 로 이동 할 때 캐 시 에 있 는 isFirst 데 이 터 를 1 로 바 꾸 고 나중에 응용 프로그램 을 열 면 안내 페이지 에 들 어가 지 않 습 니 다.

@Override
public void onClick(View view) {
 switch (view.getId()){
  case R.id.guide_btn:
   setisFirst();
   Intent intent= new Intent(GuideActivity.this, MainActivity.class);
   startActivity(intent);
   finish();
   break;
 }
}
/**
 *          
 */
private void setisFirst() {
 SharedPreferences.Editor editor= getSharedPreferences("data", MODE_PRIVATE).edit();
 editor.putString("isFirst", "1");
 editor.commit();
}
이로써 모두 완성!demo 첨부
원본 코드 다운로드
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기