android引导页中的小圆点随手势滑动demo
来源:互联网 发布:机锋论坛软件区 编辑:程序博客网 时间:2024/06/02 04:14
直接上代码,首先是布局文件:
<?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/vp_guide" android:layout_width="match_parent" android:layout_height="match_parent" /> <Button android:id="@+id/btn_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="60dp" android:padding="5dp" android:text="立即进入" android:visibility="invisible"/> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" > <LinearLayout android:id="@+id/ll_point_group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > </LinearLayout> <View android:id="@+id/view_blue_point" android:layout_width="10dp" android:layout_height="10dp" android:background="@mipmap/activity_point_h" /> </RelativeLayout></RelativeLayout>
操作代码:
package com.company.augus.guidepointdemo;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.view.ViewTreeObserver;import android.view.Window;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RelativeLayout;import android.widget.Toast;import java.util.ArrayList;public class MainActivity extends AppCompatActivity { private static final int[] mImageIds = new int[] { R.mipmap.activity_one,R.mipmap.activity_two, R.mipmap.activity_three}; private ViewPager vpGuide; private ArrayList<ImageView> mImageViewList; private LinearLayout llPointGroup;// 引导圆点的父控件 private int mPointWidth;// 圆点间的距离 private View viewBluePoint;// 蓝点 private Button btnStart;// 进入 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); vpGuide = (ViewPager) findViewById(R.id.vp_guide); llPointGroup = (LinearLayout) findViewById(R.id.ll_point_group); viewBluePoint = findViewById(R.id.view_blue_point); btnStart = (Button) findViewById(R.id.btn_start); btnStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"enter",Toast.LENGTH_SHORT).show(); } }); initViews(); vpGuide.setAdapter(new GuideAdapter()); vpGuide.setOnPageChangeListener(new GuidePageListener()); } /** * 初始化界面 */ private void initViews() { mImageViewList = new ArrayList<ImageView>(); // 初始化引导页的3个页面 for (int i = 0; i < mImageIds.length; i++) { ImageView image = new ImageView(this); image.setBackgroundResource(mImageIds[i]);// 设置引导页背景 mImageViewList.add(image); } // 初始化引导页的灰色圆点 for (int i = 0; i < mImageIds.length; i++) { View point = new View(this); point.setBackgroundResource(R.mipmap.activity_point_n);// 设置引导页默认圆点 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(18, 18); if (i > 0) { params.leftMargin = 10;// 设置圆点间隔 } point.setLayoutParams(params);// 设置圆点的大小 llPointGroup.addView(point);// 将圆点添加给线性布局 } // 获取视图树, 对layout结束事件进行监听 llPointGroup.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { // 当layout执行结束后回调此方法 @Override public void onGlobalLayout() { llPointGroup.getViewTreeObserver().removeGlobalOnLayoutListener(this); mPointWidth = llPointGroup.getChildAt(1).getLeft()-llPointGroup.getChildAt(0).getLeft(); System.out.println("圆点距离:" + mPointWidth); } }); } /** * ViewPager数据适配器 * */ class GuideAdapter extends PagerAdapter { @Override public int getCount() { return mImageIds.length; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(mImageViewList.get(position)); return mImageViewList.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } /** * viewpager的滑动监听 */ class GuidePageListener implements ViewPager.OnPageChangeListener { // 滑动事件 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // System.out.println("当前位置:" + position + ";百分比:" + positionOffset // + ";移动距离:" + positionOffsetPixels); int len = (int) (mPointWidth * positionOffset) + position * mPointWidth; RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewBluePoint.getLayoutParams();// 获取当前蓝点的布局参数 params.leftMargin = len;// 设置左边距 viewBluePoint.setLayoutParams(params);// 重新给蓝点设置布局参数 } // 某个页面被选中 @Override public void onPageSelected(int position) { if (position == mImageIds.length - 1) {// 最后一个页面 btnStart.setVisibility(View.VISIBLE);// 显示立即进入的按钮 } else { btnStart.setVisibility(View.INVISIBLE); } } // 滑动状态发生变化 @Override public void onPageScrollStateChanged(int state) { } }}
1 0
- android引导页中的小圆点随手势滑动demo
- 如何使新手引导页下面的小圆点随手指滑动而滑动?
- 自定义view 小圆点随手指滑动
- 引导页添加小圆点以及滑动进入主页面
- 引导页viewpager中的自绘小圆点
- Android 图片滑动,小圆点跟着滑动
- Android学习(二十六)APP引导页面以及小圆点滑动的实现
- 引导页的实现,用ViewPager,底下有小圆点显示以及滑动进入主页面
- 引导小圆点
- android 引导页 红点 岁页面滑动儿滑动
- ViewPager小圆点滑动
- Android 滑动引导页
- Android ViewPager无限循环实现底部小圆点动态滑动
- Android ViewPager 小圆点 + 无限循环 + 动态滑动
- Andaroid 新手引导页及小圆点添加
- ViewPager引导页实现跟随式小圆点
- 安卓学习记录--引导页底部跟随小圆点
- android图片随手势左右滑动
- 安全集成SAP与微信钉钉
- 我的python学习笔记(三)
- 简单例子了解View的事件分发
- Android Studio插件整理
- Mac下配置环境变量的两种方式
- android引导页中的小圆点随手势滑动demo
- 2017广东红帽杯pwn1_writeup:简单ROP
- CYW43907
- 数据库中的码
- textview特效
- 判断前台获取的字符串是否为正整数
- unix2
- Head联动RecyclerView
- android Java 打印堆栈的几种方法