zoukankan      html  css  js  c++  java
  • ViewPager欢迎界面

    一、几张图片组成欢迎界面 下方有几个点对应每个图片 当图片被选中时对应的点会变亮,当对应的点被点击时也会切换到指定画面

    以下是代码

      1 package com.example.viewpager_1;
      2 
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 
      6 import android.app.Activity;
      7 import android.os.Bundle;
      8 import android.support.v4.view.PagerAdapter;
      9 import android.support.v4.view.ViewPager;
     10 import android.support.v4.view.ViewPager.OnPageChangeListener;
     11 import android.view.View;
     12 import android.view.ViewGroup;
     13 
     14 import android.widget.ImageView;
     15 import android.widget.ImageView.ScaleType;
     16 import android.widget.LinearLayout;
     17 import android.widget.LinearLayout.LayoutParams;
     18 import android.widget.Toast;
     19 
     20 public class MainActivity extends Activity {
     21 
     22     private ViewPager vPager;
     23     private List<ImageView> views;//ViewPager中显示的所有页面,PagerAdapter使用的数据源
     24     private PagerAdapter adapter;
     25     
     26     private LinearLayout navLayout;//导航布局空间
     27     
     28     private LinearLayout.LayoutParams layoutParams;//线性布局中子控件使用的布局参数,作用设置子控件大小,外边距 
     29     
     30     
     31     @Override
     32     protected void onCreate(Bundle savedInstanceState) {
     33         super.onCreate(savedInstanceState);
     34         setContentView(R.layout.activity_main);
     35         navLayout = (LinearLayout) findViewById(R.id.navLayouttId);
     36         
     37         vPager = (ViewPager) findViewById(R.id.viewPager);
     38         
     39         inintViews();//初始化显示的页面
     40         //设置viewpager的页面滑动事件
     41         vPager.setOnPageChangeListener(new OnPageChangeListener() {
     42             @Override
     43             public void onPageSelected(int position) {
     44                 // 指定的位置的页面被选择
     45                 selectNav(position);
     46             }
     47             
     48             private void selectNav(int position) {
     49                 // 选择指定位置的导航图片为选择图片,选择的图片要重置一下
     50                 ImageView navImg  = null;
     51                 //遍历 导航布局中所有的子控件,判断子控件的位置是否为选择位置,若是,则改变图片的内容
     52                 for(int i=0;i<navLayout.getChildCount();i++){
     53                     navImg = (ImageView) navLayout.getChildAt(i );//获取布局中指定位置的子控件
     54                     if(i==position)
     55                         navImg.setImageResource(R.drawable.page_now);
     56                     else
     57                         navImg.setImageResource(R.drawable.page);
     58                 }
     59             }
     60             /*
     61              * 第一个参数: 滚动页面开始的位置
     62              * 第二个参数:  两个页面之间滚动的偏移量,范围是0-1
     63              * 第三个参数:两个页面之间滚动的像素偏移量
     64              */
     65             @Override
     66             public void onPageScrolled(int position, float offset, int offsetPixels) {
     67                 // TODO 从当前页面位置开始滚动事件
     68             }
     69             
     70             @Override
     71             public void onPageScrollStateChanged(int state) {
     72                 // 页面滚动状态发生变化时事件: 开始滚动,停止滚动,正在设置页面
     73 //                ViewPager.SCROLL_STATE_DRAGGING 开始滚动
     74 //                ViewPager.SCROLL_STATE_IDLE 停止滚动
     75 //                ViewPager.SCROLL_STATE_SETTLING 正在设置页面,即将要停止,并且设置当前的页面
     76                 
     77                 switch (state) {
     78                 case ViewPager.SCROLL_STATE_DRAGGING:
     79                     break;
     80                 case ViewPager.SCROLL_STATE_IDLE:
     81                     break;
     82                 case ViewPager.SCROLL_STATE_SETTLING:
     83                     break;
     84                 default:
     85                     break;
     86                 }
     87             }
     88         });
     89     }
     90     private void inintViews() {
     91         // TODO 加载viewpager中显示的额页面
     92         views = new ArrayList<ImageView>();
     93         ImageView imgView = null;
     94         ImageView navImg = null;
     95         layoutParams =    new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
     96         layoutParams.leftMargin=20;
     97         layoutParams.rightMargin=20;//px
     98         for(int i=1;i<=3;i++){
     99             //实例化viewpager中要显示图片的空间
    100             imgView = new ImageView(getApplicationContext());
    101             imgView.setScaleType(ScaleType.CENTER_CROP);
    102             
    103             //根据资源名和类型获取 这一资源的标示 -->R.drawable.slide1
    104             int resId = getResources().getIdentifier("slide"+i, "drawable", getPackageName());
    105             imgView.setImageResource(resId);//设置图片控件显示的图片资源
    106             if(i==3){
    107                 imgView.setOnClickListener(new View.OnClickListener() {
    108                     @Override
    109                     public void onClick(View v) {
    110                         Toast.makeText(getApplicationContext(), "正在跳转。。。。", 0).show();
    111                     }
    112                 });
    113             }
    114             views.add(imgView);//将实例化的空间添加到数据源中。
    115             
    116             navImg = new ImageView(getApplicationContext());
    117             navImg.setScaleType(ScaleType.CENTER_CROP);
    118             if(i==1)
    119                 navImg.setImageResource(R.drawable.page_now);
    120             else
    121                 navImg.setImageResource(R.drawable.page);
    122             
    123             //设置导航图片的标签: 当前导航图片的位置
    124             navImg.setTag(i-1);
    125             navImg.setOnClickListener(new View.OnClickListener() {
    126                 @Override
    127                 public void onClick(View v) {
    128                     // 点击导航图片的事件方法: 读取图片控件中的标签,转化为与ViewPager页面对应的位置,最后选择页面
    129                     int position = (Integer) v.getTag();
    130                     vPager.setCurrentItem(position);//切换viewpager显示的位置
    131                 }
    132             });
    133             navLayout.addView(navImg,layoutParams);
    134         }
    135         //实例化PagerAdapter适配器
    136         adapter = new WelcomePagerAdapter();
    137         vPager.setAdapter(adapter);
    138         //设置移除UI的间隔大小
    139 //        vPager.setOffscreenPageLimit(3);//默认值不能小于1,建议不要 改变默认值。
    140     }
    141     //声明PagerAdapter的子类,用于管理ViewPager中显示的View控件
    142     class WelcomePagerAdapter extends PagerAdapter{
    143         @Override
    144         public int getCount() {
    145             // TODO 显示返回页面的总大小
    146             return views.size();
    147         }
    148         @Override
    149         public Object instantiateItem(ViewGroup container, int position) {
    150             // TODO 获取指定位置的view,并增加到ViewPager中,同时作为当前页面的数据返回
    151             container.addView(views.get(position));
    152             return views.get(position);//作为当前页面的数据返回 
    153         }
    154         @Override
    155         public void destroyItem(ViewGroup container, int position, Object object) {
    156             // TODO 当前 位置与viewpager当中正显示页面的位置的间隔超出了一页时,需要将当前
    157             //位置的页面移除掉.同时 实例化三个页面
    158             container.removeView(views.get(position));
    159         }
    160         //固定写法;
    161         @Override
    162         public boolean isViewFromObject(View arg0, Object arg1) {
    163             // TODO 判断当前显示的页面的UI对象和数据对象是否 一致
    164             
    165             return arg0==arg1;
    166         }
    167     }
    168 }
    MainActivity.java
     1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     tools:context=".MainActivity" >
     6 
     7     <!-- 使用v4包下的可左右滑动的控件,其显示的页面需要通过PagerAdapter适配器增加或移除 -->
     8 
     9     <android.support.v4.view.ViewPager
    10         android:id="@+id/viewPager"
    11         android:layout_width="match_parent"
    12         android:layout_height="match_parent" />
    13 
    14     <!-- 导航小图片所在的布局 -->
    15     <LinearLayout
    16         android:id="@+id/navLayoutId"
    17         android:layout_width="match_parent"
    18         android:layout_height="wrap_content"
    19         android:layout_gravity="bottom"
    20         android:layout_marginBottom="10dp"
    21         android:background="#4000"
    22         android:gravity="center"
    23         android:orientation="horizontal"
    24         android:padding="20dp" />
    25 
    26 </FrameLayout>
    activity_main.xml

    效果图

  • 相关阅读:
    Qt应用如何发布
    关于在windows下部署发布QT程序的总结
    干净地发布QT程序
    解析 Qt 程序在Windows 下发布
    Qt 5.2.0 和 VS 2012集成
    Unable to find a qt build, to solve this problem specify a qt build
    运行python程序不显示cmd的方法
    py2exe使用方法
    python 类
    在Pygtk和Glade使用Gtkbuilder
  • 原文地址:https://www.cnblogs.com/bimingcong/p/4817855.html
Copyright © 2011-2022 走看看