Android專案實戰(三):實現第一次進入軟體的引導頁
原文:Android專案實戰(三):實現第一次進入軟體的引導頁
最近做的APP接近尾聲了,就是些優化工作了,
我們都知道現在的APP都會有引導頁,就是安裝之後第一次開啟才顯示的引導頁面(介紹這個軟體的幾張可以切換的圖)
自己做了一下,結合之前學過的
思路很簡單,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 Studio實現電商引導頁原始碼Android
- flutter Lottie 動畫引導頁的實現Flutter動畫
- Android MVP模式專案實戰AndroidMVP模式
- # 計算機軟體技術實習日誌專案三(二) 迷宮專案實現計算機
- 【quickhybrid】Android端的專案實現UIAndroid
- 軟體測試實戰專案,問題答疑
- 07#Web 實戰:實現 GitHub 個人主頁專案拖拽排序WebGithub排序
- 軟體測試專案實戰之功能測試 千鋒實戰教程
- 驚天祕密!如何在 Flutter 專案中實現操作引導Flutter
- 搞事情,自定義 LayoutInflater 實現酷炫引導頁
- 一分鐘實現Android遮罩引導檢視Android遮罩
- 短視訊軟體開發,動態計算在指定位置新增view,實現引導頁效果View
- App專案實戰之路(三):原型篇APP原型
- 鴻蒙專案實戰(五):修改專案啟用頁Page鴻蒙
- go語言實戰教程:實戰專案資源匯入和專案框架搭建Go框架
- GraphQL搭配MongoDB入門專案實戰MongoDB
- 現有Android專案中整合Flutter/Flutter混合開發實戰(一)AndroidFlutter
- HarmonyOS Next 入門實戰 - 基礎元件、頁面實現元件
- WanJetpack專案:用Jetpack實現玩Android,追求最官方的實現方式JetpackAndroid
- Python靜態網頁爬蟲專案實戰Python網頁爬蟲
- DjangoRestFramework框架三種分頁功能的實現 - 在DjangoStarter專案模板中封裝DjangoRESTFramework框架封裝
- Android知識問答與分享專案實戰Android
- Android專案實戰(五十七):Glide 高斯模糊效果AndroidIDE
- 在vue專案中 使用driver.js來進行頁面分步引導VueJS
- 【javaWeb】第51天—— WEB實戰專案三JavaWeb
- Android中的JNI入門實戰Android
- React專案實戰(三)嘗試實現一個拉動重新整理元件React元件
- HarmonyOS Next 入門實戰 - 導航框架:頁面路由、元件導航(Navigation)框架路由元件Navigation
- Flutter實現啟動頁、閃屏廣告頁、引導頁Flutter的flutter_native_splash庫Flutter
- 脈脈App引導頁面中推薦功能的實現推測APP
- 硬體銷售實施流程管理如何通過Zoho專案管理軟體實現?專案管理
- Android專案實戰之高仿網易雲音樂專案介紹Android
- 第一次主導專案
- 專案實戰:彈出廣告任意頁面展示
- dubbo專案實戰
- HarmonyOS 實戰專案
- LittleFox專案實戰
- python實戰專案Python