博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android项目实战(三):实现第一次进入软件的引导页
阅读量:7034 次
发布时间:2019-06-28

本文共 6019 字,大约阅读时间需要 20 分钟。

原文:

最近做的APP接近尾声了,就是些优化工作了,

我们都知道现在的APP都会有引导页,就是安装之后第一次打开才显示的引导页面(介绍这个软件的几张可以切换的图)

自己做了一下,结合之前学过的

 

思路很简单,APP的主界面还是作为主Activity,只要新添加一个类来判断是不是第一次打开APP

设主activity 名字为:MainActivity.java   判断是不是第一次打开APP且实现引导页面的类 LoginActivity ,另外还需要一个类 这是中用到的 ZoomOutPageTransformer.java

1.在主activity中,在一开始 先跳转到LoginActivity类中

1  protected void onCreate(Bundle savedInstanceState) { 2         super.onCreate(savedInstanceState); 3         requestWindowFeature(Window.FEATURE_NO_TITLE); 4         setContentView(R.layout.activity_main); 5         startActivity(new Intent(MainActivity.this, LoginActivity.class)); //跳转到LoginActivity类中 6       //初始化 7         init(); 8         initEvent(); 9         //默认显示第一个功能的界面(微信界面)10         setSelect(0);11     }

2.在LoginActivity类中判断是不是第一次打开,如果是,则显示ViewPager切换动画效果

如果不是,则执行finish();语句,直接结束这个Activity  自然的就回到了主Activity中了

 

LoginActivity代码

1 package com.example.qunxiong; 2  3 import java.io.OutputStream; 4 import java.util.ArrayList; 5 import java.util.List; 6  7  8  9 import android.app.Activity;10 import android.content.Context;11 import android.content.Intent;12 import android.content.SharedPreferences;13 import android.content.SharedPreferences.Editor;14 import android.os.Bundle;15 import android.support.v4.view.PagerAdapter;16 import android.support.v4.view.ViewPager;17 import android.view.View;18 import android.view.ViewGroup;19 import android.view.View.OnClickListener;20 import android.widget.Button;21 import android.widget.ImageView;22 import android.widget.ImageView.ScaleType;23 24 public class LoginActivity extends Activity {25     private ViewPager mviewpager; //控件26     private int[] mImgIds = new int[]{R.drawable.bg_rank_shenqi_0,R.drawable.bg_rank_shenqi_1,R.drawable.bg_rank_shenqi_10};//初始化图片27     private List
mImages = new ArrayList
();28 private Button jump;29 private SharedPreferences preferences;30 private Editor editor;31 private OutputStream os;32 @Override33 protected void onCreate(Bundle savedInstanceState) {34 super.onCreate(savedInstanceState);35 setContentView(R.layout.login);36 preferences = getSharedPreferences("phone", Context.MODE_PRIVATE);37 jump = (Button) findViewById(R.id.jump);38 jump.setOnClickListener(new OnClickListener() { 39 @Override40 public void onClick(View v) {41 // TODO Auto-generated method stub42 finish();43 }44 });45 //判断是不是首次登录,46 if (preferences.getBoolean("firststart", true)) {47 editor = preferences.edit();48 //将登录标志位设置为false,下次登录时不在显示首次登录界面49 editor.putBoolean("firststart", false);50 editor.commit();51 mviewpager = (ViewPager) findViewById(R.id.id_viewpager);52 //为ViewPage切换添加动画效果(3.0以上版本才可以有效果)53 mviewpager.setPageTransformer(true, new ZoomOutPageTransformer());54 55 mviewpager.setAdapter(new PagerAdapter() {56 57 @Override58 public Object instantiateItem(View container, int position) {59 ImageView imageview = new ImageView(LoginActivity.this);60 imageview.setImageResource(mImgIds[position]);61 imageview.setScaleType(ScaleType.CENTER_CROP); //设置图片不变形62 ((ViewGroup) container).addView(imageview);63 mImages.add(imageview);64 return imageview;65 };66 @Override67 public void destroyItem(View container, int position, Object object) {68 // TODO Auto-generated method stub69 70 ((ViewPager) container).removeView(mImages.get(position));71 }72 public boolean isViewFromObject(View view, Object object) {73 // TODO Auto-generated method stub74 return view == object;75 }76 77 @Override78 public int getCount() { //返回图片个数79 // TODO Auto-generated method stub80 return mImgIds.length;81 }82 });83 }84 else 85 {86 finish();87 }88 89 }90 }91

 切换动画效果代码 

ZoomOutPageTransformer.java
1 package com.example.qunxiong; 2  3 import android.annotation.SuppressLint; 4 import android.support.v4.view.ViewPager; 5 import android.view.View; 6  7 public class ZoomOutPageTransformer implements ViewPager.PageTransformer { 8     private static final float MIN_SCALE = 0.85f; 9     private static final float MIN_ALPHA = 0.5f;10     11     @SuppressLint("NewApi") public void transformPage(View view, float position) {12         int pageWidth = view.getWidth();13         int pageHeight = view.getHeight();14 15         if (position < -1) { // [-Infinity,-1)16             // This page is way off-screen to the left.17             view.setAlpha(0);18 19         } else if (position <= 1) { // [-1,1]20             // Modify the default slide transition to shrink the page as well21             float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));22             float vertMargin = pageHeight * (1 - scaleFactor) / 2;23             float horzMargin = pageWidth * (1 - scaleFactor) / 2;24             if (position < 0) {25                 view.setTranslationX(horzMargin - vertMargin / 2);26             } else {27                 view.setTranslationX(-horzMargin + vertMargin / 2);28             }29 30             // Scale the page down (between MIN_SCALE and 1)31             view.setScaleX(scaleFactor);32             view.setScaleY(scaleFactor);33 34             // Fade the page relative to its size.35             view.setAlpha(MIN_ALPHA +36                     (scaleFactor - MIN_SCALE) /37                     (1 - MIN_SCALE) * (1 - MIN_ALPHA));38 39         } else { // (1,+Infinity]40             // This page is way off-screen to the right.41             view.setAlpha(0);42         }43     }44 }
View Code

 

 

转载地址:http://vnyal.baihongyu.com/

你可能感兴趣的文章
Java通过几种经典的算法来实现数组排序
查看>>
Linux下安装apache可能遇到的问题总结
查看>>
linux下c/c++混合编程
查看>>
FastCGI和CGI运行差异知识普及
查看>>
Spring Boot整合MyBatis学习总结
查看>>
我的友情链接
查看>>
yum仓库搭建
查看>>
一张图告诉你,只会JavaScript还不够!
查看>>
IBM TSM注册许可证
查看>>
WINDOWS SERVER 2003本地管理员、目录服务还原模式管理员、域管理员密码的破解汇总...
查看>>
Lync Server 2013企业版部署系列之九:前端部署后续工作
查看>>
如何为Exchange2010设计基于Windows Server Backup的备份恢复方案
查看>>
centos6编译安装nginx1.8.1
查看>>
信息安全包含哪些
查看>>
浅谈TCP全局同步和TCP饥饿
查看>>
我的友情链接
查看>>
flex中ViewStack利用按钮做导航
查看>>
simpleButton的几种状态解析
查看>>
Listview优化
查看>>
图片和图形之添加Motion(14)
查看>>