1. 程式人生 > >℃江讓您從精通到入門:Android Studio 簡單實現ViewPager,可做APP操作提示

℃江讓您從精通到入門:Android Studio 簡單實現ViewPager,可做APP操作提示

  • 前期準備,如下圖:這裡寫圖片描述
  • 第一步、先書寫佈局檔案:activity_main.xml檔案如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:id
="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent">
</android.support.v4.view.ViewPager> </RelativeLayout>
  • 第二步、在MainAvtivity中宣告控制元件並使用自帶的介面卡操作List的方式,操作頁面切換。MainActivity程式碼如下:
package com.example.dujiang0311.viewpager;

import
android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import java.util.ArrayList; import java.util.List; public
class MainActivity extends AppCompatActivity { private ViewPager mViewPager; private int[] mImgId = new int[]{R.drawable.p1, R.drawable.p2, R.drawable.p3}; private List<ImageView> mList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mViewPager = (ViewPager) findViewById(R.id.viewpager); //為ViewPager新增動畫效果 mViewPager.setPageTransformer(true,new ZoomOutPageTransformer()); mViewPager.setAdapter(new PagerAdapter() { @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mList.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(MainActivity.this); imageView.setImageResource(mImgId[position]); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); container.addView(imageView); mList.add(imageView); return imageView; } @Override public int getCount() { return mImgId.length; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } }); } }
  • 動畫切換類的書寫(官方文件的例子):ZoomOutPageTransformer程式碼書寫如下:
package com.example.dujiang0311.viewpager;

/**
 * 專案名:  ViewPager
 * 包名:    com.example.dujiang0311.viewpager
 * 建立者:  Dujiang0311
 * 建立時間:2017/4/23 19:38
 * 描述:    TODO
 */

import android.annotation.SuppressLint;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;

public class ZoomOutPageTransformer implements ViewPager.PageTransformer
{
    private static final float MIN_SCALE = 0.85f;
    private static final float MIN_ALPHA = 0.5f;

    @SuppressLint("NewApi")
    public void transformPage(View view, float position)
    {
        int pageWidth = view.getWidth();
        int pageHeight = view.getHeight();

        Log.e("TAG", view + " , " + position + "");

        if (position < -1)
        { // [-Infinity,-1)
            // This page is way off-screen to the left.
            view.setAlpha(0);

        } else if (position <= 1) //a頁滑動至b頁 ; a頁從 0.0 -1 ;b頁從1 ~ 0.0
        { // [-1,1]
            // Modify the default slide transition to shrink the page as well
            float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
            float vertMargin = pageHeight * (1 - scaleFactor) / 2;
            float horzMargin = pageWidth * (1 - scaleFactor) / 2;
            if (position < 0)
            {
                view.setTranslationX(horzMargin - vertMargin / 2);
            } else
            {
                view.setTranslationX(-horzMargin + vertMargin / 2);
            }

            // Scale the page down (between MIN_SCALE and 1)
            view.setScaleX(scaleFactor);
            view.setScaleY(scaleFactor);

            // Fade the page relative to its size.
            view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE)
                    / (1 - MIN_SCALE) * (1 - MIN_ALPHA));

        } else
        { // (1,+Infinity]
            // This page is way off-screen to the right.
            view.setAlpha(0);
        }
    }
}
  • 注意:如果想做閃屏的操作提示模組,可以在FlashActivity中加判斷,判斷使用者是否是第一次開啟APP,然後就可以了。

相關推薦

精通入門Android Studio 簡單實現ViewPagerAPP操作提示

前期準備,如下圖: 第一步、先書寫佈局檔案:activity_main.xml檔案如下: <?xml version="1.0" encoding="utf-8"?> <Re

MyBatis入門精通(十)使用association標籤實現巢狀查詢

最近在讀劉增輝老師所著的《MyBatis從入門到精通》一書,很有收穫,於是將自己學習的過程以部落格形式輸出,如有錯誤,歡迎指正,如幫助到你,不勝榮幸! 本篇部落格主要講解使用association標籤實現巢狀查詢的方法。 1. 明確需求 仍然延用上篇部落格中的需求:根據使用者id查詢使用者資訊的同時獲取該使用

的應用兼容 Android Oreo

上下 secure roi ctr 耗電 系統屬性 stat -i count 不知不覺Android Oreo已經發布幾個月時間了,你的應用開始使用最新平臺了嗎?在應用遷移過程中是否遇到了一些棘手問題?你的Android應用兼容Oreo如何呢? 我們應該都

Android熱修復入門Android中的ClassLoader

ClassLoader簡介 對於Java程式來說,編寫程式就是編寫類,執行程式也就是執行類(編譯得到的class檔案),其中起到關鍵作用的就是類載入器ClassLoader。 任何一個Java程式都是若干個class檔案組成的一個完整的Java程式,在程式執行的時候,需要將class

安卓開發入門篇(一)Android Studio匯入ApiDemos

引言 本人程式設計師,之前做網站比較多,nodejs/express+html/css+mysql,再之前也做過Java開發,程式設計上還是有豐富的經驗。 在持續的實戰中,發現想做產品的話,前端似乎更重要,因為前端才能看到產品形態。雖然說移動端形勢已經每況愈

Androidandroid studio快捷鍵大全

構造 F12 重寫 template 類的方法 alt 參數 ctrl+ 代碼 一、常用快捷鍵  1.Ctrl+E,可以顯示最近編輯的文件列表  2.Shift+Click可以關閉文件  3.Ctrl+[或]可以跳到大括號的開頭結尾  4.Ctrl+Shift+Backsp

Android命令Monkey壓力測試詳解

語句 shel gre href 輸入 white option blacklist 文件 停止Monkey命令: 1. ps命令 查找uiautomator的進程 打開cmd命令行窗口 輸入: adb shell ps | grep monkey 返回來的第一個數字,即

Android零基礎入門第15節掌握Android Studio項目結構揚帆起航

str ems undle int 兼容 總結 local cati 它的 經過前面的學習,Android Studio開發環境已準備OK,運行Android應用程序的原生模擬器和Genymotion模擬器都準備妥當。在之前簡單講過Eclipse中Android工程的項目結

安卓第一課android studio 的環境搭建與真機運行以及遇到的問題

自己的 安卓 structure 最好 not found 創建過程 cor 虛擬 col AS的下載: https://developer.android.com/studio/index.html AS的安裝: android studio, sdk, virtual

有限元方法入門有限元方法簡單的二維算例(三角形剖分)

有限元方法簡單的二維算例(三角形剖分) 算例描述 我們對下述橢圓邊值問題 \label{eq1} {−Δu=fu|∂Ω=0 {

有限元方法入門有限元方法簡單的二維算例(矩形剖分)

#有限元方法簡單的二維算例(矩形剖分) 算例描述 我們對下述橢圓邊值問題 \label{eq1} {

有限元方法入門有限元方法簡單的一維算例

有限元方法簡單的一維算例 算例描述 我們對下述邊值問題\label{eq1} {u′′(x)+u(x)=(1−π2)sinπxu(0)=u(1)=00≤x≤1 {

Android開發規範Android Studio規範

儘量使用最新版的IDE進行開發; 編碼格式統一為UTF-8; 編輯完.java、 .xml等檔案後一定要格式化(基本格式方面使用 AS 預設模板即可); 刪除多餘的import,減少警告出現,可利用AS的Optimize Imports(Setti

android進階3step4Android Studio——NDK配置

課程目標 1,瞭解NDK Android NDK 2,完成環境搭建 3,能夠開發完整NDK專案 課程內容 1,初見Android NDK 2,開發環境搭建 3,Android NDK到底是什麼 4,Android NDK使用規範 一、

擁抱 Android Studio 之二Android Studio 與 Gradle 深入

關於學習方式 曾經跟朋友討論過我們所接受過的大學工科教育,都是一上來先學基礎理論,最後再來一個金工實習。一開始不知道為什麼而學,學不進去,荒廢了基礎,等到金工實習的時候,又發現基礎不牢,後悔不已。 考慮到傳統教育方式的不足之處,筆者在組織本系列文章的時候是先講入門例項,進而

爬蟲簡單入門第一個簡單爬蟲

import requests # socket-->http-->requests response=requests.get('https://tieba.baidu.com/f?kw=%E6%B5%81%E6%B5%AA%E6%B1%89') print(response.text)

安卓開發學習筆記(四)Android Stuidio無法實現隱式Intent是為什麼?

1 package com.example.lenovo.activitytest; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.view

Android Studio更改快捷鍵開發更快捷

首先,為了不用滑鼠,把手停留在鍵盤上,我們需要很多的組合鍵,但是方向鍵我們經常會用到,而且右手要離開當前的狀態,然後按下方向鍵,再調回之前的狀態,這樣真的很不爽。所以我們可以選擇把方向鍵用組合鍵代替,步驟如下: File -> Settings -> keyma

WatchKit入門建立一個簡單的猜數遊戲

轉自:http://www.cocoachina.com/ios/20150202/11087.html 本文由cocoaChina譯者小組成員@TurtleFromMars 翻譯自Appcoda,原作者:julian engel,編者注:再過幾個月Apple Wa

python入門工欲善其事必先利其器

未來將是一個全民程式設計的年代。本頭條號以科普為基礎,旨在向大家介紹如何快速掌握這門程式語言,從而能為自己的工作和生活帶來高效和便利。本期的主題是python入門,希望通過下面三個步驟把大家帶到python的世界中來。   本人對於Python學習建立了一個小小的學習圈子,為各位提