博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发中的引导页面
阅读量:6672 次
发布时间:2019-06-25

本文共 5326 字,大约阅读时间需要 17 分钟。

hot3.png

主程序代码:

import java.util.ArrayList; import android.app.Activity;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.ImageView;import android.widget.LinearLayout; /** * 功能描述:主程序入口类 */public class MainActivity extends Activity implements OnClickListener,        OnPageChangeListener {    // 定义ViewPager对象    private ViewPager viewPager;     // 定义ViewPager适配器    private ViewPagerAdapter vpAdapter;     // 定义一个ArrayList来存放View    private ArrayList
 views;     // 引导图片资源    private static final int[] pics = { R.drawable.guide1, R.drawable.guide2,            R.drawable.guide3, R.drawable.guide4 };     // 底部小点的图片    private ImageView[] points;     // 记录当前选中位置    private int currentIndex;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);         // 初始化组件        initView();        // 初始化数据        initData();    }     /**     * 初始化组件     */    private void initView() {        // 实例化ArrayList对象        views = new ArrayList
();         // 实例化ViewPager        viewPager = (ViewPager) findViewById(R.id.viewpager);         // 实例化ViewPager适配器        vpAdapter = new ViewPagerAdapter(views);    }     /**     * 初始化数据     */    private void initData() {        // 定义一个布局并设置参数        LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(                LinearLayout.LayoutParams.FILL_PARENT,                LinearLayout.LayoutParams.FILL_PARENT);         // 初始化引导图片列表        for (int i = 0; i < pics.length; i++) {            ImageView iv = new ImageView(this);            iv.setLayoutParams(mParams);            iv.setImageResource(pics[i]);            views.add(iv);        }         // 设置数据        viewPager.setAdapter(vpAdapter);        // 设置监听        viewPager.setOnPageChangeListener(this);         // 初始化底部小点        initPoint();    }     /**     * 初始化底部小点     */    private void initPoint() {        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);         points = new ImageView[pics.length];         // 循环取得小点图片        for (int i = 0; i < pics.length; i++) {            // 得到一个LinearLayout下面的每一个子元素            points[i] = (ImageView) linearLayout.getChildAt(i);            // 默认都设为灰色            points[i].setEnabled(true);            // 给每个小点设置监听            points[i].setOnClickListener(this);            // 设置位置tag,方便取出与当前位置对应            points[i].setTag(i);        }         // 设置当面默认的位置        currentIndex = 0;        // 设置为白色,即选中状态        points[currentIndex].setEnabled(false);    }     /**     * 当滑动状态改变时调用     */    @Override    public void onPageScrollStateChanged(int arg0) {     }     /**     * 当当前页面被滑动时调用     */     @Override    public void onPageScrolled(int arg0, float arg1, int arg2) {     }     /**     * 当新的页面被选中时调用     */     @Override    public void onPageSelected(int position) {        // 设置底部小点选中状态        setCurDot(position);    }     /**     * 通过点击事件来切换当前的页面     */    @Override    public void onClick(View v) {        int position = (Integer) v.getTag();        setCurView(position);        setCurDot(position);    }     /**     * 设置当前页面的位置     */    private void setCurView(int position) {        // 排除异常情况        if (position < 0 || position >= pics.length) {            return;        }        viewPager.setCurrentItem(position);    }     /**     * 设置当前的小点的位置     */    private void setCurDot(int positon) {        // 排除异常情况        if (positon < 0 || positon > pics.length - 1 || currentIndex == positon) {            return;        }        points[positon].setEnabled(false);        points[currentIndex].setEnabled(true);         currentIndex = positon;    } }

数据适配器类:

import java.util.ArrayList; import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View; public class ViewPagerAdapter extends PagerAdapter {     //界面列表    private ArrayList
 views;         public ViewPagerAdapter(ArrayList
 views) {        this.views=views;    }         //获得当前界面总数    @Override    public int getCount() {        // TODO Auto-generated method stub        if(views!=null){            return views.size();        }        return 0;    }     //初始化position位置的界面    @Override    public Object instantiateItem(View view, int position) {        // TODO Auto-generated method stub        ((ViewPager)view).addView(views.get(position),0);        return views.get(position);    }     //判断是否由对象生成界面    @Override    public boolean isViewFromObject(View arg0, Object arg1) {        // TODO Auto-generated method stub        return arg0==arg1;             }     //销毁position位置的界面    @Override    public void destroyItem(View view, int position, Object arg2) {        ((ViewPager) view).removeView(views.get(position));          }         /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub     } }

布局类:

         
         
        
        
        
        
         

主页面下面的小圆点是通过selector来实现的:

    
    

转载于:https://my.oschina.net/u/2356499/blog/424877

你可能感兴趣的文章
AutoMapper的简单使用
查看>>
tomcat 服务不支持 chkconfig 以及其他服务不能添加到开机启动时的操作
查看>>
让PowerShell用上Git
查看>>
XXXXX was compiled with optimization - stepping may behave oddly; variables may not be available.
查看>>
Linux0.11内核--几种地址(逻辑地址、线性地址、物理地址)的含义
查看>>
posix多线程有感--自旋锁
查看>>
NOIP2014 提高组 Day2——寻找道路
查看>>
设置Sysctl.conf用以提高Linux的性能(最完整的sysctl.conf优化方案)
查看>>
tp路由+伪静态+去掉index.php
查看>>
R.I.P. PK
查看>>
【转载】使用铁哥SmartFlash快速开发方案:66行代码搞定抽奖程序!
查看>>
Map<key,value>泛型get(key)值为null问题解决
查看>>
ZendFramework学习第一章
查看>>
40种网页小技巧
查看>>
PHP 乱码解决方面
查看>>
在Linux中一个网卡绑定多个IP设定
查看>>
Ural 1519 Formula 1 (插头DP)
查看>>
c++动态链接库函数转换为C#函数
查看>>
编写用逻辑扇区号读写软盘的中断例程
查看>>
Pentaho Big Data Community Home - Pentaho Big Data - Pentaho Wiki
查看>>