Android项目实战(三):实现第一次进入软件的引导页

简介: 原文:Android项目实战(三):实现第一次进入软件的引导页最近做的APP接近尾声了,就是些优化工作了, 我们都知道现在的APP都会有引导页,就是安装之后第一次打开才显示的引导页面(介绍这个软件的几张可以切换的图) 自己做了一下,结合之前学过的 慕课网_ViewPager切换动画(3.
原文: Android项目实战(三):实现第一次进入软件的引导页

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

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

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

慕课网_ViewPager切换动画(3.0版本以上有效果)

 

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

设主activity 名字为:MainActivity.java   判断是不是第一次打开APP且实现引导页面的类 LoginActivity ,另外还需要一个类 这是安卓开发_慕课网_ViewPager切换动画(3.0版本以上有效果)中用到的 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<ImageView> mImages = new ArrayList<ImageView>();
28     private Button jump;
29      private SharedPreferences preferences;
30       private Editor editor;
31       private OutputStream os;
32       @Override
33       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             @Override
40             public void onClick(View v) {
41                 // TODO Auto-generated method stub
42                 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             @Override
58             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             @Override
67             public void destroyItem(View container, int position, Object object) {
68                 // TODO Auto-generated method stub
69                 
70                 ((ViewPager) container).removeView(mImages.get(position));
71             }
72             public boolean isViewFromObject(View view, Object object) {
73                 // TODO Auto-generated method stub
74                 return view == object;
75             }
76             
77             @Override
78             public int getCount() {                   //返回图片个数
79                 // TODO Auto-generated method stub
80                 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 well
21             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

 

 
目录
相关文章
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
9544 2
|
XML Android开发 数据格式
Android -- 启动引导页
Android -- 启动引导页
214 0
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
6月前
|
安全 Shell 测试技术
安卓硬改一键新机,一键新机改串软件,免ROOT网卡串号Imei/sn码
本内容提供移动安全研究相关资料与方法,包括通过Android Studio官方工具和模拟器进行设备测试、ADB调试命令学习
|
5月前
|
监控 Android开发 数据安全/隐私保护
批量发送短信的平台,安卓群发短信工具插件脚本,批量群发短信软件【autojs版】
这个Auto.js脚本实现了完整的批量短信发送功能,包含联系人管理、短信内容编辑、发送状态监控等功能
|
6月前
|
XML Android开发 数据格式
手机型号修改器, 安卓修改手机型号软件, 一键修改手机型号
这个实现方案包含四个核心模块:设备伪装类、后台服务、Xposed模块和清单文件。DeviceSpoofer类负责生成和修改设备信息
|
10月前
|
安全 Android开发 数据安全/隐私保护
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
454 12
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
|
10月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
401 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!
|
自然语言处理 数据可视化 Java
国内首位聋人 Android 软件工程师体验通义灵码,“这真是太棒了”
@workspace 功能发布后,我们收到了非常多新老朋友的积极反馈,其中有一个特别的朋友给我留下了深刻的印象,来分享一下他的故事。

热门文章

最新文章