创建引导界面

效果为:图片滑动,最后一个页面有按钮

guide.xml

<?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/guidepager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
    <Button 
        android:id="@+id/startBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/point_ll"
        android:text="@string/start_app"
        android:gravity="center_horizontal"
        android:layout_centerHorizontal="true"
        android:textColor="#F0FFA500"
        android:textSize="20sp"
        android:src="@drawable/share_bt"
        android:visibility="gone"/>
    
    <LinearLayout 
        android:id="@+id/point_ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal"
        android:layout_marginBottom="24dp"
        android:orientation="horizontal">
        
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="15.0dip"
            android:src="@drawable/point"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="15.0dip"
            android:src="@drawable/point"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="15.0dip"
            android:src="@drawable/point"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="15.0dip"
            android:src="@drawable/point"/>
    </LinearLayout>

    
</RelativeLayout>

point.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_enabled="true" android:drawable="@drawable/point_normal" />
    <item android:state_enabled="false" android:drawable="@drawable/point_select" />
</selector>

GuideActivity



import java.util.ArrayList;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class GuideActivity extends BaseActivity implements OnPageChangeListener {
	/**定义一个ViewPager对象*/
	@InjectView(id = R.id.guidepager)
	private ViewPager guidePager;
	
	/**存放点的线性布局*/
	@InjectView(id = R.id.point_ll)
	private LinearLayout pointLL;
	
	/**定义一个ArrayList存放View*/
	private ArrayList<View> views;
	
	/**定义ViewPager适配器*/
	private GuideAdapter guideAdapter;
	
	/**引导界面图片*/
	private static final int[] pics = {R.drawable.guide_1,
		                               R.drawable.guide_2,
		                               R.drawable.guide_3,
		                               R.drawable.guide_4};
	
	/**底部小点的图片*/
	private ImageView[] points;
	
	/**当前图片的位置*/
	private int currentIndex;
	
	/**跳转按钮*/
	@InjectView(id = R.id.startBtn)
	private Button startBtn;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.guide);
		initView();
		initData();
		
	}

	
	/**
	 * 初始化数据
	 */
	private void initData() {
		//定义一个布局并设置参数
		LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
				LinearLayout.LayoutParams.MATCH_PARENT);
		       
        //初始化引导图片列表
        for(int i=0; i<pics.length; i++) {
            ImageView iv = new ImageView(this);
            iv.setLayoutParams(mParams);
            iv.setImageResource(pics[i]);
            views.add(iv);
        } 
        
        //设置数据
        guidePager.setAdapter(guideAdapter);
        //设置监听
        guidePager.setOnPageChangeListener(this);
        
        startBtn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				startToLogo();
			}

		});
        //初始化底部小点
        initPoint();
	}
	
	/**
	 * 跳转到LogoActivity界面
	 */
	private void startToLogo() {
		Intent intent = new Intent(GuideActivity.this, LoginActivity.class);
		startActivity(intent);
		GuideActivity.this.finish();
	}
	
	/**
	 * 初始化底部小点
	 */
	private void initPoint(){
        points = new ImageView[pics.length];

        //循环取得小点图片
        for (int i = 0; i < pics.length; i++) {
        	//得到一个LinearLayout下面的每一个子元素
        	points[i] = (ImageView) pointLL.getChildAt(i);
        	//默认都设为灰色
        	points[i].setEnabled(true);
        	//给每个小点设置监听
        	points[i].setOnClickListener(new OnClickListener() {
				
				@Override
				public void onClick(View v) {
					int position = (Integer)v.getTag();
					setCurView(position);
				    setCurPos(position);
				}
			});
        	//设置位置tag,方便取出与当前位置对应
        	points[i].setTag(i);
        }
        
        //设置当面默认的位置
        currentIndex = 0;
        //设置为白色,即选中状态
        points[currentIndex].setEnabled(false);
	}

	/**
	 * 初始化组件
	 * */
	private void initView() {
		views = new ArrayList<View>();
		guideAdapter = new GuideAdapter(views);
	}

	@Override
	public void onPageScrollStateChanged(int arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}

	/**
	 * 当新的页面被选中时调用
	 */
	@Override
	public void onPageSelected(int position) {
		setCurPos(position);
	}

	/**
	 * 设置当前小点的位置及点中状态
	 */
	private void setCurPos(int position) {
		if (position < 0 || position > pics.length - 1 || currentIndex == position) {
            return;
        }
        points[position].setEnabled(false);
        points[currentIndex].setEnabled(true);

        currentIndex = position;
        
        //如果是最后一个页面
        if (position == (pics.length - 1)) {
			startBtn.setVisibility(View.VISIBLE);
		}
	}

	/**
	 * 设置当前页面
	 */
	private void setCurView(int position) {
		if (position < 0 || position >= pics.length) {
            return;
        }
        guidePager.setCurrentItem(position);
	}

}


GuideAdapter

package com.wri.hongyi.soft.ui.adapter;

import java.util.ArrayList;

import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;


public class GuideAdapter extends PagerAdapter {

	//界面列表
	private ArrayList<View> views;
	
	public GuideAdapter (ArrayList<View> views) {
		this.views = views;
	}
	
	/**
	 * 获得当前界面数
	 * */
	@Override
	public int getCount() {
		return views.size();
	}

	/**
	 * 判断是否由对象生成界面
	 * */
	@Override
	public boolean isViewFromObject(View view, Object obj) {
		return view == obj;
	}
	
	@Override  
    public int getItemPosition(Object object) {  
        return super.getItemPosition(object);  
    }  

	/**
	 * 销毁position位置的界面
	 * */
    @Override  
    public void destroyItem(View view, int position, Object obj) {  
        ((ViewPager) view).removeView(views.get(position));  
    }  

    /**
	 * 初始化position位置的界面
	 * */
    @Override  
    public Object instantiateItem(View view, int position) {  
        ((ViewPager) view).addView(views.get(position));  
        return views.get(position);  
    }
    
	@Override
	public void finishUpdate(View arg0) {
		
	}
	
	@Override
	public void restoreState(Parcelable arg0, ClassLoader arg1) {
		
	}
	
	@Override
	public Parcelable saveState() {
		return null;
	}
	
	@Override
	public void startUpdate(View arg0) {
		
	}  

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值