笔记-引导页GuideActivity

来源:互联网 发布:java迷宫游戏代码 编辑:程序博客网 时间:2024/06/06 03:16
1. 用到ViewPager
activity----GuideActivity
manifest----注册activity
xml ----activity_guide.xml

2. 图片


3. xml中添加 1>ViewPager,Android Private Libraries-->找到V4-->view-->ViewPager-->右键复制限定名


 2>Button给设定背景改变,用到选择器;设定字体改变,用到选择器


在res下新建drawable,其中新建btn_guide_selector.xml跟btn_guide_text_selector.xml
<item 中android:state_pressed="true" android:drawable="@drawable/***"/>
<item android:drawable="@drawable/***"/> 文字雷同
3>小灰点跟小红点,RelativeLayout好控制
小灰点个数要动态加载放置在一水平的LinearLayout中
小红点用一View节点 

此两点的实现需要用到shape,灰点为例。在drawable下新建shape_point_grey.xml
<shape xmlns:android="***" android:shape="oval" >


    <solid android:color="@android:color/darker_gray" />


</shape>
GuideActivity中
requestWindowsFeature(Windows.FETURE_NO_TITLE);
通过ID找到ViewPager;
初始化View;
给ViewPager设置Adapter;

initView()中
图片资源ID放到int[]
遍历每一ID时,先new出ImageView,再将此id设给ImageView做背景资源setBackgroundResource
将每次new出的ImageView添加至一ArrayList中


创建class GuideAdapter
重写instantiateItem (addView);destroyItem (removeView)

再initView()中动态设置小灰点至一水平的LinearLayout中
遍历图片资源ID时,先new出View,再给其设定自定义的背景资源
要大小跟间距,new出其父布局的布局参数(大小),在第二个参数时,给布局参数.leftMargin 设大小
把布局参数设给此View。将其添加至水平的线性布局中


小红点位置随手指移动,给ViewPager设置监听器setOnPageChangeListener()
创建class GuidePageListener implements OnPageChangeListener
在其方法中有监听滑动事件,可获得滑过距离所占的百分比,用两小灰点左边的距离之差乘以此百分比即可。

initView()中,获取两小灰点左边的距离之差用  mPointWidth = llPointGroup.getChildAt(1).getLeft()
- llPointGroup.getChildAt(0).getLeft();
但得在当layout执行结束后才能测得距离,要获取视图树, 对layout结束事件进行监听
llPointGroup.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {***remove掉此监听;测量}

在监听的滑动事件方法中 计算出小红点要移动的距离 (给加上本来位置应有的距离)
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewRedPoint
.getLayoutParams();// 获取当前红点的布局参数
设置左边距,重新给小红点设置布局参数


按钮只出现在最后一页 找到Button 在ViewPager的监听选择页中,判断是否为最后一页,
是给Button设visibility为View.visiable,否则设为invisiable。
按钮跳转页,设置监听,后finished();

GuideActivity显示一次后,第二次不显示
用SharePreference.要多次判断,对其封装成Utiles,getBoolean,setBoolean
SplashActivity显示完后要判断,跳哪个页面,jumpNextPage(),第一次给默认,后判断
点开始体验后更新sp, 表示已经展示了新手引导


0 0