ViewPagerウェルカムインタフェースからブートインタフェースへの実装の1つ
ViewPagerウェルカムインタフェースからブートインタフェースへの実装
ソフトウェアを開き、アニメーションをポップアップし、アニメーションをブートインタフェースに終了します.
まず、ウェルカムインタフェースアニメーションの実装を実現します.
ブートインタフェースの実装:
ブートインタフェースのレイアウト:
viewpagerにアダプタadapterを設定する-list
ViewPagerが設定したアダプタ:一般的な4つの方法
ViewPagerページの選択リスナーの設定
クラスにインタフェースOnPageChangeListenerを実装させる方法は以下の通りである.
ここまでウェルカムインタフェースとブートインタフェースが完了しましたが、どのようにして2つのインタフェース間の接続を実現しますか?ウェルカムインタフェースのアニメーションを覚えていますか.アニメーションの終了時にこのような方法が呼び出されます.
私たちはこの方法の中でインタフェースのジャンプを実現します.
ページの静的ポイントを起動する方法
メイン・アクティビティ:
点のレイアウトを描きます.
ダイナミックポイントの実装:
既存のLinearLayoutの周辺にRelaterLayoutを追加し、Viewロードの動的ポイントを追加します.
ダイナミックポイントのカラーセレクタ
初期化データの後にinitData()に次の文を追加します.
最後に、呼び出しをスライドでリスニングする方法:
ソフトウェアを開き、アニメーションをポップアップし、アニメーションをブートインタフェースに終了します.
まず、ウェルカムインタフェースアニメーションの実装を実現します.
RelativeLayout mRelatineLayout=(RelativeLayout) findViewById(R.id.mRelatineLayout);
//
AnimationSet set=new AnimationSet(false);
/**
*
*/
RotateAnimation mRotateAnimation=new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f);
mRotateAnimation.setFillEnabled(true);
mRotateAnimation.setFillAfter(true);
mRotateAnimation.setDuration(1000);
/**
*
*/
AlphaAnimation mAlphaAnimation=new AlphaAnimation(0, 1.0f);
mAlphaAnimation.setDuration(1000);
/**
*
*/
ScaleAnimation mScaleAnimation=new ScaleAnimation(0, 1.0f, 0, 1.0f,
Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f);
mScaleAnimation.setDuration(1000);
//
set.addAnimation(mRotateAnimation);
set.addAnimation(mAlphaAnimation);
set.addAnimation(mScaleAnimation);
/**
*
*/
mRelatineLayout.startAnimation(set);
set.setAnimationListener(new AnimationListener() {
//
@Override
public void onAnimationStart(Animation animation) {
}
//
@Override
public void onAnimationRepeat(Animation animation) {
}
//
@Override
public void onAnimationEnd(Animation animation) {
// ,
}
});
ブートインタフェースの実装:
ブートインタフェースのレイアウト:
引导界面具体类的实现:
public class GuirdActivity extends Activity implements OnPageChangeListener {
private ViewPager mViewPager;
private Button mButton;
private List mList;
private static int items[]={R.drawable.guide_1,R.drawable.guide_2,R.drawable.guide_3};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_guird);
mViewPager=(ViewPager) findViewById(R.id.guird_pager);
mButton=(Button) findViewById(R.id.btn_start_button);
initData();
}
/**
*
*/
@SuppressWarnings("deprecation")
private void initData() {
mList = new ArrayList();
for(int i=0;i
viewpagerにアダプタadapterを設定する-list
mViewPager.setAdapter(new GuirdViewPagerAdapter());
ViewPagerが設定したアダプタ:一般的な4つの方法
/**
* viewpageer
* @author Administrator
*
*/
class GuirdViewPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
if(mList!=null){return mList.size();}
return 0;
}
@Override
public boolean isViewFromObject(View view, Object obj) {
return view==obj;
}
/**
*
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// viewpager imageview
ImageView iv=mList.get(position);
container.removeView(iv);
}
/**
*
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView iv=mList.get(position);
// viewpager container viewpager
container.addView(iv);
return iv;
}
}
ViewPagerページの選択リスナーの設定
mViewPager.setOnPageChangeListener(this);
クラスにインタフェースOnPageChangeListenerを実装させる方法は以下の通りである.
//
@Override
public void onPageScrollStateChanged(int arg0) {
}
//
//position
//positionset
//arg2
@Override
public void onPageScrolled(int position, float positionoffset, int arg2) {
}
// viewpager
//@position
@Override
public void onPageSelected(int position) {
//
mButton.setVisibility((position==mList.size()-1?View.VISIBLE:View.GONE));
}
ここまでウェルカムインタフェースとブートインタフェースが完了しましたが、どのようにして2つのインタフェース間の接続を実現しますか?ウェルカムインタフェースのアニメーションを覚えていますか.アニメーションの終了時にこのような方法が呼び出されます.
//
@Override
public void onAnimationEnd(Animation animation) {
// ,
}
私たちはこの方法の中でインタフェースのジャンプを実現します.
ページの静的ポイントを起動する方法
// LinearLayout
メイン・アクティビティ:
LinearLayout mLinearLayout=(LinearLayout) findViewById(R.id.ll_guird_point);
//
View point=new View(this);
point.setBackgroundResource(R.drawable.guird_point_normal);
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(30, 30);
//
if(i!=0){//
params.leftMargin=15;
}
mLinearLayout.addView(point, params);
点のレイアウトを描きます.
//
//
//
ダイナミックポイントの実装:
既存のLinearLayoutの周辺にRelaterLayoutを追加し、Viewロードの動的ポイントを追加します.
ダイナミックポイントのカラーセレクタ
初期化データの後にinitData()に次の文を追加します.
// ,
View mPointSelect=(View) findViewById(R.id.re_point_selected);
initData();
//
mPointSelect.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// UI
if(mList==null){
return ;
}
//
mPointSelect.getViewTreeObserver().removeGlobalOnLayoutListener(this);
mSpace = mLinearLayout.getChildAt(1).getLeft()-mLinearLayout.getChildAt(0).getLeft();
}
});
最後に、呼び出しをスライドでリスニングする方法:
//
//position
//positionset
//arg2
@Override
public void onPageScrolled(int position, float positionoffset, int arg2) {
//1、
RelativeLayout.LayoutParams params= (android.widget.RelativeLayout.LayoutParams) mPointSelect.getLayoutParams();
//2、 marginLeft
params.leftMargin=(int) (mSpace*position+mSpace*positionoffset+0.5f);
mPointSelect.setLayoutParams(params);
}