</pre>刚进公司,菜鸟一只,今天给自己规定的任务是学习如何开发一个项目的引导页,废话不多说,通过今天学习,算是了解了。<p></p><p>首先需要创建一个GuideActivity ,来填充买个引导页的View。由于用的公司框架,所以有些地方可能不同。不过大概内容没什么不同。</p><p></p><p><pre name="code" class="html"><pre name="code" class="java">package com.xinhua.xinhuashe.option.guide;
import java.util.ArrayList;
import java.util.Timer;
public class NewGuideActivity extends ParentActivity {
private ViewPager guide_vp;
private Button guide_btn;
private NewGuidePageAdater newguidePageAdater;
private Timer timer;
private TimerTask timerTask;
private boolean timerIsRun = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MobileApplication.allActivity.add(this);
//创建一个填充器
LayoutInflater inflater = LayoutInflater.from(NewGuideActivity.this);
View view1 = inflater.inflate(R.layout.guide_view1, null);
View view2 = inflater.inflate(R.layout.guide_view2, null);
View view3 = inflater.inflate(R.layout.guide_view3, null);
//创建一个list集合,存放三个view对象
ArrayList<View> array = new ArrayList<View>();
array.add(view1);
array.add(view2);
array.add(view3);
newguidePageAdater = new NewGuidePageAdater(array);
guide_vp.setAdapter(newguidePageAdater);
//对viewpager 建立监听,当在第三页时进行计时,然后完成自动跳转
guide_vp.setOnPageChangeListener(changeListener);
//对第三张中的button设置监听 跳转
guide_btn = (Button) view3.findViewById(R.id.guide_btn);
guide_btn.setOnClickListener(listener);
}
private OnPageChangeListener changeListener = new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int position, float arg1, int arg2) {
//timerIsRun 防止进来来回切换计时器混乱 只进行一次延迟执行
if (position==2&&!timerIsRun) {
timer.schedule(timerTask, 3000, 500);
timer.cancel();
timerTask.cancel();
timerIsRun = true;
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
};
//按钮跳转
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
handler.sendEmptyMessage(0);
timerTask.cancel();
timer.cancel();
}
};
@Override
protected int getLayoutId() {
return R.layout.guide;
}
@Override
protected void setupViews() {
guide_vp = (ViewPager) findViewById(R.id.guide_viewpager);
}
@Override
protected void initialized() {
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(0);
timer.cancel();
timerTask.cancel();
}
};
}
private Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
Intent intent = new Intent(NewGuideActivity.this, SlidingMenuControlActivity.class);
startActivity(intent);
NewGuideActivity.this.finish();
return true;
}
});
@Override
protected void threadTask() {
}
}
下面是guideXml文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.xinhuanews.shouyangnew"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<android.support.v4.view.ViewPager
android:id="@+id/guide_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
<com.xinhua.xinhuashe.view.FlowIndicator
android:id="@id/homepage_header_FlowIndicator"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dip"
app:count="3"
app:point_normal_color="#45000000"
app:point_radius="3dip"
app:point_seleted_color="@color/white"
app:point_size="5dip"
app:space="10dip" />
</RelativeLayout>
上面页面中
com.xinhua.xinhuashe.view.FlowIndicator这个控件是自定义的,以后等我研究懂了会粘出来,大家要用的时候可以将它删了。
下面是三个layout页面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/guide_1" />
</LinearLayout>
只粘一个,剩下两个一样。
下面是PageAdater 的代码
import java.util.ArrayList;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class NewGuidePageAdater extends PagerAdapter {
private ArrayList<View> listView;
//构造方法
public NewGuidePageAdater(ArrayList<View> listView) {
this.listView = listView;
}
//获取要滑动控件的数量,这里就应该是我们所传进来listView的size
@Override
public int getCount() {
// TODO Auto-generated method stub
return listView.size();
}
//来判断是否显示的是同一张图片,我们传进arg0==arg1即可
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
//PagerAdapter只缓存三张图片,当大于三张是调用此方法销毁图片
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(listView.get(position));
}
//当显示的图片可以进行缓存时,则调用此方法
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(listView.get(position));
return listView.get(position);
}
}
有什么地方模糊的,可以提出来 ,大家一起讨论,或者我给解答。谢谢