控件使用(一)---ViewPager实现引导页带监听点
来源:互联网 发布:方维o2o 6.0 源码 编辑:程序博客网 时间:2024/05/22 03:09
ViewPager简单使用----实现应用欢迎页--->引导页--->主页面
引导页是基本每个应用都配备的页面,网上也有很多,但有些不全,有些太简单!所以自己总结了一下给大家参考,也方便自己以后随时嵌套使用.这只是随手弄的,代码不太规范,有需要自己调整修改!不多废话,进入正题(直接将代码复制到相应地方,改了图片就能起飞,注释还算详细,自己看吧):
首先是欢迎页WelcomeActivity:
这里的SharedPreferences是用来判断是否第一次启动应用的,是就进入引导页,否就直接进入主页面
package com.sunapollo.myapplication;import android.app.Activity;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.os.Handler;import android.view.Window;import android.view.WindowManager;public class WelcomeActivity extends Activity{ boolean isFirstIn = false; Intent intent; /* * 这个Activiyt是程序启动画面,也就是一个图片。在这个Activity里使用了Handler一秒后会进入到引导Activity里面。 */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏,注意一定要在绘制view之前调用这个方法,不然会出现 setContentView(R.layout.welcome); SharedPreferences preferences = getSharedPreferences("first_pref", MODE_PRIVATE); isFirstIn = preferences.getBoolean("isFirstIn", true); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); //全屏显示 new Handler().postDelayed(new Runnable(){ public void run(){ if (isFirstIn) { // start GuideActivity intent = new Intent(WelcomeActivity.this, GuideActivity.class); } else { // start MainActivity intent = new Intent (WelcomeActivity.this,MainActivity.class); } WelcomeActivity.this.startActivity(intent); WelcomeActivity.this.finish(); } }, 1000); }}
布局文件(welcome.xml)就这么简单粗暴,一个图片:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/aaa"></LinearLayout>
如果是第一次进入应用,那么就会跳转到导航页面GuideActivity:
package com.sunapollo.myapplication;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.LinearLayout;import java.io.InputStream;import java.util.ArrayList;import java.util.List;/** * 实现首次启动的引导页面 */public class GuideActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener{ private ViewPager vp; private int []imageIdArray;//图片资源的数组 private List<View> viewList;//图片资源的集合 private ViewGroup vg;//放置圆点 //实例化原点View private ImageView iv_point; private ImageView []ivPointArray; //最后一页的按钮 private ImageButton ib_start; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.view_pager); //标记是否首次启动 SharedPreferences preferences = getSharedPreferences( "first_pref", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("isFirstIn", false); editor.commit(); ib_start = (ImageButton) findViewById(R.id.guide_ib_start); ib_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(GuideActivity.this,MainActivity.class)); finish(); } }); //加载ViewPager initViewPager(); //加载底部圆点 initPoint(); } /** * 加载底部圆点 */ private void initPoint() { //这里实例化LinearLayout vg = (ViewGroup) findViewById(R.id.guide_ll_point); //根据ViewPager的item数量实例化数组 ivPointArray = new ImageView[viewList.size()]; //循环新建底部圆点ImageView,将生成的ImageView保存到数组中 int size = viewList.size(); for (int i = 0;i<size;i++){ iv_point = new ImageView(this); iv_point.setLayoutParams(new ViewGroup.LayoutParams(20,20)); iv_point.setPadding(30,0,30,0);//left,top,right,bottom ivPointArray[i] = iv_point; //第一个页面需要设置为选中状态,这里采用两张不同的图片 if (i == 0){ iv_point.setBackgroundResource(R.drawable.dark_dot); }else{ iv_point.setBackgroundResource(R.drawable.white_dot); } //将数组中的ImageView加入到ViewGroup vg.addView(ivPointArray[i]); } } /** * 加载图片ViewPager */ private void initViewPager() { vp = (ViewPager) findViewById(R.id.guide_vp); //实例化图片资源 imageIdArray = new int[]{R.drawable.bbb,R.drawable.ccc,R.drawable.ddd}; viewList = new ArrayList<>(); //获取一个Layout参数,设置为全屏 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT); //循环创建View并加入到集合中 int len = imageIdArray.length; for (int i = 0;i<len;i++){ //new ImageView并设置全屏和图片资源 ImageView imageView = new ImageView(this); imageView.setLayoutParams(params); imageView.setImageBitmap(readBitMap(GuideActivity.this,imageIdArray[i])); //将ImageView加入到集合中 viewList.add(imageView); } //View集合初始化好后,设置Adapter vp.setAdapter(new GuidePagerAdapter(viewList)); //设置滑动监听 vp.setOnPageChangeListener(this); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } /** 2. * 以最省内存的方式读取本地资源的图片 3. * @param context 4. * @param resId 5. * @return 6. */ public static Bitmap readBitMap(Context context, int resId){ BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true; //获取资源图片 InputStream is = context.getResources().openRawResource(resId); return BitmapFactory.decodeStream(is,null,opt); } /** * 滑动后的监听 * @param position */ @Override public void onPageSelected(int position) { //循环设置当前页的标记图 int length = imageIdArray.length; for (int i = 0;i<length;i++){ ivPointArray[position].setBackgroundResource(R.drawable.dark_dot); if (position != i){ ivPointArray[i].setBackgroundResource(R.drawable.white_dot); } } //判断是否是最后一页,若是则显示按钮 if (position == imageIdArray.length - 1){ ib_start.setVisibility(View.VISIBLE); }else { ib_start.setVisibility(View.GONE); } } @Override public void onPageScrollStateChanged(int state) { }}
导航页布局view_pager.xml(LinearLayout)是用来控制点的,ImagerButton(如果滑倒最后一页,出现按钮,点击进入主页面):
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/guide_vp" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/guide_ll_point" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="40dp" android:gravity="center_horizontal" android:orientation="horizontal"></LinearLayout> <ImageButton android:id="@+id/guide_ib_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/guide_ll_point" android:layout_centerHorizontal="true" android:background="@null" android:src="@mipmap/ic_launcher" android:visibility="gone" /></RelativeLayout>
GuidePagerAdapter:
package com.sunapollo.myapplication;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import java.util.List;/** * Created by 南尘 on 2016/7/10. */public class GuidePagerAdapter extends PagerAdapter { private List<View> viewList; public GuidePagerAdapter(List<View> viewList) { this.viewList = viewList; } /** * @return 返回页面的个数 */ @Override public int getCount() { if (viewList != null) { return viewList.size(); } return 0; } /** * 判断对象是否生成界面 * @param view * @param object * @return */ @Override public boolean isViewFromObject(View view, Object object) { return view == object; } /** * 初始化position位置的界面 * @param container * @param position * @return */ @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewList.get(position)); return viewList.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(viewList.get(position)); }}
最后就是主页面了,我在里面什么操作都没有,,就是默认的MainActivity,就不贴出来了.
Activity记得注册就行了!
手懒得童鞋点这里http://download.csdn.net/detail/qq_27757229/9871422源码直接下载
阅读全文
1 0
- 控件使用(一)---ViewPager实现引导页带监听点
- Android使用ViewPager实现引导页(带小点提示)
- 使用ViewPager实现引导页
- 使用viewPager实现引导页
- ViewPager实现引导界面,引导的指针点(Dot)带移动动画
- ViewPager实现带引导小圆点与自动跳转的引导界面
- 一个案例教你简单地玩转ViewPager(一)之带指示点的引导页
- android使用ViewPager实现欢迎引导页
- android使用ViewPager实现引导页效果
- 152.n1-使用ViewPager实现引导页
- 使用ViewPager实现启动引导页
- Android实现带Tab页引导的ViewPager
- Android实现带Tab页引导的ViewPager
- Android实现带Tab页引导的ViewPager
- Android实现带Tab页引导的ViewPager
- 用ViewPager实现引导页,带页面指示器
- ViewPager实现引导页
- ViewPager实现引导页
- 多表联合查询的sql语句
- 第一次使用jenkins
- Kaldi 训练一个 DNN 声学模型
- Mongodb学习(一)
- 配置maven过程中报过的错及其解决方案
- 控件使用(一)---ViewPager实现引导页带监听点
- java线程问题(待完善)
- hdoj 1014
- 《Netty in Action》chapter 10 : The codec framework
- java静态代理和动态代理
- 关于饿了么ui框架的使用之select的应用
- VS2015中OpenCV编程插件Image Watch安装和使用介绍
- webservice获取客户端IP地址
- tabWidget设置文字方向