创建引导界面

来源:互联网 发布:mac怎么下载qq堂 编辑:程序博客网 时间:2024/05/18 01:44

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

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;@Overrideprotected 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() {@Overridepublic 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() {@Overridepublic 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);}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}/** * 当新的页面被选中时调用 */@Overridepublic 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;}/** * 获得当前界面数 * */@Overridepublic int getCount() {return views.size();}/** * 判断是否由对象生成界面 * */@Overridepublic 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);      }    @Overridepublic void finishUpdate(View arg0) {}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}  }



0 0
原创粉丝点击