Splash页面动态移动的小点
来源:互联网 发布:天元围棋 网络电视直播 编辑:程序博客网 时间:2024/05/21 19:33
一般用在splash页面
/** * @author andong * 引导页面 */public class GuideUI extends Activity implements OnClickListener { private List<ImageView> imageViewList; private LinearLayout llPointGroup; // 点的组 private View redPointView; // 红色的点 private int basicWidth;// 点的间距 private Button btnStartExperience; // 开始体验 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); // 去除标题, 必须在setContentView之前调用 setContentView(R.layout.guide); init(); } /** * 初始化控件 */ private void init() { ViewPager mViewPager = (ViewPager) findViewById(R.id.vp_guide); btnStartExperience = (Button) findViewById(R.id.btn_start_experience); llPointGroup = (LinearLayout) findViewById(R.id.ll_guide_point_group); redPointView = findViewById(R.id.view_guide_red_point); btnStartExperience.setOnClickListener(this); // 准备数据 initData(); GuidePagerAdapter mAdapter = new GuidePagerAdapter(); mViewPager.setAdapter(mAdapter); mViewPager.setOnPageChangeListener(new MyOnPageChangeListener()); // measure -> layout -> draw // 获得视图树观察者, 观察当整个布局的layout时的事件 redPointView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { /** * 当全局开始布局layout时回调此方法 */ @Override public void onGlobalLayout() { // 此方法只需要执行一次就可以: 把当前的监听事件从视图树中移除掉, 以后就不会在回调此事件了. redPointView.getViewTreeObserver().removeGlobalOnLayoutListener(this); // 点的间距 = 第1个点的左边 - 第0个点的左边; basicWidth = llPointGroup.getChildAt(1).getLeft() - llPointGroup.getChildAt(0).getLeft(); System.out.println("点的间距: " + basicWidth); } }); } /** * 初始化数据 */ private void initData() { int[] imageResIDs = { R.drawable.guide_1, R.drawable.guide_2, R.drawable.guide_3 }; imageViewList = new ArrayList<ImageView>(); ImageView iv; for (int i = 0; i < imageResIDs.length; i++) { iv = new ImageView(this); iv.setBackgroundResource(imageResIDs[i]); imageViewList.add(iv); // 向线性布局中添加一个灰色的点 View view = new View(this); view.setBackgroundResource(R.drawable.point_normal); LayoutParams params = new LayoutParams(20, 20); if(i != 0) { params.leftMargin = 20; } view.setLayoutParams(params); llPointGroup.addView(view); } } class GuidePagerAdapter extends PagerAdapter { @Override public int getCount() { return imageViewList.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { // 向ViewPager中添加一个ImageView ImageView iv = imageViewList.get(position); container.addView(iv); // 把添加的ImageView返回回去 return iv; } } class MyOnPageChangeListener implements OnPageChangeListener { /** * 当页面滚动时触发此方法 * @param position 当前正在被选中的position * @param positionOffset 页面移动的比值 * @param positionOffsetPixels 页面移动的像素 */ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // 点最终移动的距离 = 间距 * 比值; int leftMargin = (int) (basicWidth * (position + positionOffset));// System.out.println("红色的点移动的距离: " + leftMargin + ", 当前页面的索引: " + position + ", 比值: " + positionOffset); RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) redPointView.getLayoutParams(); lp.leftMargin = leftMargin; redPointView.setLayoutParams(lp); } /** * 当页面选中时触发此方法 */ @Override public void onPageSelected(int position) { if(position == imageViewList.size() -1) { btnStartExperience.setVisibility(View.VISIBLE); } else { btnStartExperience.setVisibility(View.GONE); } } /** * 当页面滚动状态改变时触发此方法 */ @Override public void onPageScrollStateChanged(int state) { } } @Override public void onClick(View v) { // 向SharedPreferences中存储一个打开过的标记 CacheUtils.putBoolean(this, WelcomeUI.IS_OPEN_MAIN_PAGER_KEY, true); // 跳转到主页面 startActivity(new Intent(this, MainUI.class)); // 把自己关掉 finish(); }}
0 0
- Splash页面动态移动的小点
- Splash动态页面爬虫
- 利用scrapy-splash爬取JS生成的动态页面
- scrapy-splash爬取JS生成的动态页面
- Splash页面的跳转逻辑
- Splash 页面
- 自定义动态跳动的三个加载小点
- iOS中Splash欢迎页面的实现
- Splash.activity闪屏页面的设置
- Android应用的首页splash页面
- 83.模仿app进入的splash页面
- Unity3d三 去除unity3d的splash页面
- Scrapy爬虫中使用Splash抓取动态JS页面
- 关于app#启动页面#splash页面#开屏广告#的小结
- 去除unity3d的splash页面(remove unity3d splash image),在android中。
- 手机安全卫士------Splash页面
- Android Splash 页面
- zaker splash页面实现
- 如何获取IOS上所有安装的app?
- 顺序栈
- storyboard中自定义cell
- Spring XML配置文件结构及bean的命名
- string.xml 特殊符号转义和变量使用
- Splash页面动态移动的小点
- EJB是什么呢?
- windows线程同步的总结
- Bc Rikka with Graph
- hdu1050
- mysql客户端工具
- Mac 开机自启动 httpd
- 由动态库文件dll生成lib库文件
- Emacs使用笔记