首先需要一个布局文件,是FlameLayout组成的,里面包含了一个VIEwPager和一个relativeLayout,relativeLayout里面是一个linearLayout,linearLayout里面是准备放ImageVIEw,动态添加。
布局文件如下:
复制代码 代码如下:
<?xml version="1.0" enCoding="utf-8"?>
<FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"
androID:layout_wIDth="match_parent"
androID:layout_height="match_parent"
androID:orIEntation="vertical" >
<androID.support.v4.vIEw.VIEwPager
androID:ID="@+ID/guIDePages"
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:layout_gravity="center" />
<relativeLayout
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:layout_gravity="bottom">
<linearLayout
androID:ID="@+ID/vIEwGroup"
androID:layout_alignParentBottom="true"
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:orIEntation="horizontal"
androID:gravity="center"
androID:layout_marginBottom="30dip">
</linearLayout>
</relativeLayout>
</FrameLayout>
另外我们需要4个布局文件,就是向导要显示的图片,每个布局文件是一页,每个布局文件里面都是一个ImageVIEw。如下所示:
布局文件一:
复制代码 代码如下:
<?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:src="@drawable/feature_guIDe_0"/>"
</linearLayout>
布局文件二:
复制代码 代码如下:
<?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:src="@drawable/feature_guIDe_1"/>
</linearLayout>
布局文件三:
复制代码 代码如下:
<?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:src="@drawable/feature_guIDe_2"/>"
</linearLayout>
布局文件四:
复制代码 代码如下:
<?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:src="@drawable/feature_guIDe_3"/>"
</linearLayout>
然后在代码里面加载这4个布局文件和主布局文件:
Activity代码:
复制代码 代码如下:
package com.alex.helloworld;
import java.util.ArrayList;
import androID.app.Activity;
import androID.os.Bundle;
import androID.os.Parcelable;
import androID.support.v4.vIEw.PagerAdapter;
import androID.support.v4.vIEw.VIEwPager;
import androID.support.v4.vIEw.VIEwPager.OnPagechangelistener;
import androID.vIEw.LayoutInflater;
import androID.vIEw.VIEw;
import androID.vIEw.VIEwGroup.LayoutParams;
import androID.vIEw.Window;
import androID.Widget.FrameLayout;
import androID.Widget.ImageVIEw;
import androID.Widget.linearLayout;
public class HelloWord2 extends Activity implements OnPagechangelistener {
private ArrayList<VIEw> mPageVIEws;
private LayoutInflater mInflater;
private linearLayout mGroups;
private FrameLayout mMain;
private VIEwPager mVIEwPager;
private ImageVIEw[] mImageVIEws;
@OverrIDe
protected voID onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestwindowFeature(Window.FEATURE_NO_Title);
mInflater = LayoutInflater.from(this);
mPageVIEws = new ArrayList<VIEw>();
mPageVIEws.add(mInflater.inflate(R.layout.item_0,null));
mPageVIEws.add(mInflater.inflate(R.layout.item_1,null));
mPageVIEws.add(mInflater.inflate(R.layout.item_2,null));
mPageVIEws.add(mInflater.inflate(R.layout.item_3,null));
mMain = (FrameLayout) mInflater.inflate(R.layout.hello2,null);
mGroups = (linearLayout) mMain.findVIEwByID(R.ID.vIEwGroup);
mVIEwPager = (VIEwPager) mMain.findVIEwByID(R.ID.guIDePages);
mImageVIEws = new ImageVIEw[mPageVIEws.size()];
for(int i=0; i<mPageVIEws.size(); i++) {
ImageVIEw iv = new ImageVIEw(this);
iv.setLayoutParams(new LayoutParams(20,20));
mImageVIEws[i] = iv;
if(i == 0) {
mImageVIEws[i].setBackgroundResource(R.drawable.page_indicator_focused);
} else {
mImageVIEws[i].setBackgroundResource(R.drawable.page_indicator);
}
mGroups.addVIEw(mImageVIEws[i]);
}
mVIEwPager.setAdapter(mPageAdapter);
mVIEwPager.setonPagechangelistener(this);
setContentVIEw(mMain);
}
private PagerAdapter mPageAdapter = new PagerAdapter() {
@OverrIDe
public voID startUpdate(VIEw arg0) {
}
@OverrIDe
public Parcelable saveState() {
return null;
}
@OverrIDe
public voID restoreState(Parcelable arg0,ClassLoader arg1) {
}
@OverrIDe
public boolean isVIEwFromObject(VIEw arg0,Object arg1) {
return arg0 == arg1;
}
@OverrIDe
public Object instantiateItem(VIEw arg0,int arg1) {
((VIEwPager)arg0).addVIEw(mPageVIEws.get(arg1));
return mPageVIEws.get(arg1);
}
@OverrIDe
public int getCount() {
return mPageVIEws.size();
}
@OverrIDe
public voID finishUpdate(VIEw arg0) {
}
@OverrIDe
public voID destroyItem(VIEw arg0,int arg1,Object arg2) {
((VIEwPager)arg0).removeVIEw(mPageVIEws.get(arg1));
}
};
@OverrIDe
public voID onPageScrolled(int position,float positionOffset,
int positionOffsetPixels) {
}
@OverrIDe
public voID onPageSelected(int position) {
for(int i=0; i<mPageVIEws.size(); i++) {
mImageVIEws[position].setBackgroundResource(R.drawable.page_indicator_focused);
if(position != i) {
mImageVIEws[i].setBackgroundResource(R.drawable.page_indicator);
}
}
}
@OverrIDe
public voID onPageScrollStateChanged(int state) {
}
}
首先从LayoutInflater里面加载4个要显示的布局和主布局文件。
然后把布局文件作为VIEw放到一个ArrayList里面。
然后从主布局里面找到VIEwPager和linearLayout,VIEwPager用来装载4个布局文件,linearLayout用来装载4个提示图标。
然后新建4个ImageVIEw,并设置对应的背景,然后作为VIEw添加到linearLayout里面去。
然后给VIEwPager设置Adapter,设置onPagechangelistener。
Adapter里面要设置getCount,就是页面的个数,我们这里是4个,就设置4;
同时在instantiateItem里面讲对应的页面add进去,并返回对应的页面。
在destroyItem的时候讲页面remove掉。
在选择页面的方法里面onPageSelected里面设置选中图标的背景。
总结以上是内存溢出为你收集整理的使用ViewPager实现android软件使用向导功能实现步骤全部内容,希望文章能够帮你解决使用ViewPager实现android软件使用向导功能实现步骤所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)