android中界面滑动延伸,android中ViewPager详解--视图滑动、界面卡等效果 (三)
GuideActivity.java引導界面:
import?java.util.ArrayList;
import?java.util.List;
import?android.app.Activity;
import?android.os.Bundle;
import?android.support.v4.view.ViewPager;
import?android.support.v4.view.ViewPager.OnPageChangeListener;
import?android.view.LayoutInflater;
import?android.view.View;
import?android.widget.ImageView;
import?android.widget.LinearLayout;
import?cn.eoe.leigo.splash.adapter.ViewPagerAdapter;
/**
*
*
*/
public?class?GuideActivity?extends?Activity?implements?OnPageChangeListener?{
private?ViewPager?vp;
private?ViewPagerAdapter?vpAdapter;
private?List?views;
//?底部小點圖片
private?ImageView[]?dots;
//?記錄當前選中位置
private?int?currentIndex;
@Override
protected?void?onCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.guide);
//?初始化頁面
initViews();
//?初始化底部小點
initDots();
}
private?void?initViews()?{
LayoutInflater?inflater?=?LayoutInflater.from(this);
views?=?new?ArrayList();
//?初始化引導圖片列表
views.add(inflater.inflate(R.layout.what_new_one,?null));
views.add(inflater.inflate(R.layout.what_new_two,?null));
views.add(inflater.inflate(R.layout.what_new_three,?null));
views.add(inflater.inflate(R.layout.what_new_four,?null));
//?初始化Adapter
vpAdapter?=?new?ViewPagerAdapter(views,?this);
vp?=?(ViewPager)?findViewById(R.id.viewpager);
vp.setAdapter(vpAdapter);
//?綁定回調(diào)
vp.setOnPageChangeListener(this);
}
private?void?initDots()?{
LinearLayout?ll?=?(LinearLayout)?findViewById(R.id.ll);
dots?=?new?ImageView[views.size()];
//?循環(huán)取得小點圖片
for?(int?i?=?0;?i?
dots[i]?=?(ImageView)?ll.getChildAt(i);
dots[i].setEnabled(true);//?都設(shè)為灰色
}
currentIndex?=?0;
dots[currentIndex].setEnabled(false);//?設(shè)置為白色,即選中狀態(tài)
}
private?void?setCurrentDot(int?position)?{
if?(position??views.size()?-?1
||?currentIndex?==?position)?{
return;
}
dots[position].setEnabled(false);
dots[currentIndex].setEnabled(true);
currentIndex?=?position;
}
//?當滑動狀態(tài)改變時調(diào)用
@Override
public?void?onPageScrollStateChanged(int?arg0)?{
}
//?當當前頁面被滑動時調(diào)用
@Override
public?void?onPageScrolled(int?arg0,?float?arg1,?int?arg2)?{
}
//?當新的頁面被選中時調(diào)用
@Override
public?void?onPageSelected(int?arg0)?{
//?設(shè)置底部小點選中狀態(tài)
setCurrentDot(arg0);
}
}
ViewPagerAdapter.java。ViewPager的適配器:
import?java.util.List;
import?android.app.Activity;
import?android.content.Context;
import?android.content.Intent;
import?android.content.SharedPreferences;
import?android.content.SharedPreferences.Editor;
import?android.os.Parcelable;
import?android.support.v4.view.PagerAdapter;
import?android.support.v4.view.ViewPager;
import?android.view.View;
import?android.view.View.OnClickListener;
import?android.widget.ImageView;
import?cn.eoe.leigo.splash.MainActivity;
import?cn.eoe.leigo.splash.R;
/**
*/
public?class?ViewPagerAdapter?extends?PagerAdapter?{
//?界面列表
private?List?views;
private?Activity?activity;
private?static?final?String?SHAREDPREFERENCES_NAME?=?"first_pref";
public?ViewPagerAdapter(List?views,?Activity?activity)?{
this.views?=?views;
this.activity?=?activity;
}
//?銷毀arg1位置的界面
@Override
public?void?destroyItem(View?arg0,?int?arg1,?Object?arg2)?{
((ViewPager)?arg0).removeView(views.get(arg1));
}
@Override
public?void?finishUpdate(View?arg0)?{
}
//?獲得當前界面數(shù)
@Override
public?int?getCount()?{
if?(views?!=?null)?{
return?views.size();
}
return?0;
}
//?初始化arg1位置的界面
@Override
public?Object?instantiateItem(View?arg0,?int?arg1)?{
((ViewPager)?arg0).addView(views.get(arg1),?0);
if?(arg1?==?views.size()?-?1)?{
ImageView?mStartWeiboImageButton?=?(ImageView)?arg0
.findViewById(R.id.iv_start_weibo);
mStartWeiboImageButton.setOnClickListener(new?OnClickListener()?{
@Override
public?void?onClick(View?v)?{
//?設(shè)置已經(jīng)引導
setGuided();
goHome();
}
});
}
return?views.get(arg1);
}
private?void?goHome()?{
//?跳轉(zhuǎn)
Intent?intent?=?new?Intent(activity,?MainActivity.class);
activity.startActivity(intent);
activity.finish();
}
/**
*
*?method?desc:設(shè)置已經(jīng)引導過了,下次啟動不用再次引導
*/
private?void?setGuided()?{
SharedPreferences?preferences?=?activity.getSharedPreferences(
SHAREDPREFERENCES_NAME,?Context.MODE_PRIVATE);
Editor?editor?=?preferences.edit();
//?存入數(shù)據(jù)
editor.putBoolean("isFirstIn",?false);
//?提交修改
editor.commit();
}
//?判斷是否由對象生成界面
@Override
public?boolean?isViewFromObject(View?arg0,?Object?arg1)?{
return?(arg0?==?arg1);
}
@Override
public?void?restoreState(Parcelable?arg0,?ClassLoader?arg1)?{
}
@Override
public?Parcelable?saveState()?{
return?null;
}
@Override
public?void?startUpdate(View?arg0)?{
}
}
至于MainActivity隨便了。
效果如下:
所以總結(jié)一下,我們可以使用ViewPager做什么:
1.程序使用導航,外加底部圓點的效果,這個在微信示例里介紹了
2.頁卡滑動,加上菜單的效果,不管是之前的支持手勢也支持底部圖標點擊的微信,還是今天的微博。
總結(jié)
以上是生活随笔為你收集整理的android中界面滑动延伸,android中ViewPager详解--视图滑动、界面卡等效果 (三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内拿舒儿童鼻喷雾剂是什么
- 下一篇: 大姨妈提前来是怎么回事