℃江讓您從精通到入門: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 簡單實現ViewPager,可做APP操作提示
前期準備,如下圖: 第一步、先書寫佈局檔案: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開發,程式設計上還是有豐富的經驗。 在持續的實戰中,發現想做產品的話,前端似乎更重要,因為前端才能看到產品形態。雖然說移動端形勢已經每況愈
Android:android 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進階3step4:Android 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學習建立了一個小小的學習圈子,為各位提