Android ViewPager多頁面滑動切換以及動畫效果


從網頁:http://www.2cto.com/kf/201208/148253.html這里獲取的源代碼,新建工程后,出現了很多錯誤:

█中文亂碼:

█為已有的工程添加jar包.

█導入包的時候的選擇問題.

█運行時錯誤:ANDROID.VIEW.INFLATEEXCEPTION:

java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: android.view.InflateException: Binary XML file line #10: Error inflating class xxx
(添加jar包方法錯誤引起)

█運行時錯誤:空指針異常.

java.lang.NullPointerException

(由於無意義命名引起的資源類型引用錯誤引起.)
============================================

█中文亂碼:

解決的方法是:

1)單擊亂碼的文件,右鍵選擇"Properties",

2)選擇"Resource"選項卡

3)選擇合適的文本文件編碼"Text file encoding"(導入工程后,我的是選擇 utf-8 后中文顯示正常.)

image

image

█為已有的工程添加jar包.

首先參考了http://blog.csdn.net/angle_rupert/article/details/6233600如下的內容:

image這樣我導入jar文件后就是這樣了:

image 

█導入包的時候的選擇問題.

由於源碼沒有給出import部分,所有導入到工程后需要手動導入包,但是在這里有兩個包可以導入:

image

解決辦法:

1)先備份了工程.

2)選擇導入第二個選項:"android.opengl"

3)發現隨后的下面的兩行錯誤仍然不能消除,便嘗試回到1)狀態,導入第一個選項"android.graphics"

此時就正確了.

█運行時錯誤:ANDROID.VIEW.INFLATEEXCEPTION:

首先參考了:http://www.cnblogs.com/pinky878/archive/2012/05/17/2506341.html這里的解釋,然后對照自己的,也確實發現了main.xml的問題:

"The following classes could not be found: android.support.v4.view.ViewPaper.class"

這是為什么呢?我們已經導入了android-support-v4.jar包,怎么會沒有找到這個類呢?

然后搜索到了發表此文的第一作者的文章:http://www.cnblogs.com/dwinter/archive/2012/02/27/2369590.html

在文章里,ta的工程項目是這樣的:

image

注意到這里ta導入的jar包的上級是"Referenced Libraries",但是我們在上面的方法"NEW"一個Libraries,命名的時候卻是不讓輸入空格的,(如果你沒有自己動手導入就不能發現這個了.)

解決的辦法是:

1)將已導入的的jar包從項目里移除:選中"UerLaibrary"(我們上面新建的時候命名的.),然后右鍵選擇"Buid Path"(編譯路徑) | "Remove from Buid path"(從編譯路徑中移除)image

2)直接添加jar包"Add External Archives"而不是"Add Libraries".

image

添加完成后就是這樣子的:

image

此時到main.xml里發現,沒有這樣的錯誤提示:

"The following classes could not be found: android.support.v4.view.ViewPaper.class"

█運行時錯誤:空指針異常.

java.lang.NullPointerException
eclipse提示沒有錯誤,但是當在模擬器中運行時,出現了錯誤:

image

08-18 19:48:24.253: D/dalvikvm(512): GC_EXPLICIT freed 1178 objects / 80056 bytes in 53ms
08-18 20:09:24.452: D/AndroidRuntime(569): Shutting down VM
08-18 20:09:24.452: W/dalvikvm(569): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
08-18 20:09:24.462: E/AndroidRuntime(569): FATAL EXCEPTION: main
08-18 20:09:24.462: E/AndroidRuntime(569): java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.cquptzx.TabDemo/edu.cquptzx.TabDemo.MainActivity}: java.lang.NullPointerException
08-18 20:09:24.462: E/AndroidRuntime(569):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
08-18 20:09:24.462: E/AndroidRuntime(569):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-18 20:09:24.462: E/AndroidRuntime(569):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-18 20:09:24.462: E/AndroidRuntime(569):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-18 20:09:24.462: E/AndroidRuntime(569):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-18 20:09:24.462: E/AndroidRuntime(569):     at android.os.Looper.loop(Looper.java:123)
08-18 20:09:24.462: E/AndroidRuntime(569):     at android.app.ActivityThread.main(ActivityThread.java:4627)
08-18 20:09:24.462: E/AndroidRuntime(569):     at java.lang.reflect.Method.invokeNative(Native Method)
08-18 20:09:24.462: E/AndroidRuntime(569):     at java.lang.reflect.Method.invoke(Method.java:521)
08-18 20:09:24.462: E/AndroidRuntime(569):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-18 20:09:24.462: E/AndroidRuntime(569):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-18 20:09:24.462: E/AndroidRuntime(569):     at dalvik.system.NativeStart.main(Native Method)
08-18 20:09:24.462: E/AndroidRuntime(569): Caused by: java.lang.NullPointerException
08-18 20:09:24.462: E/AndroidRuntime(569):     at edu.cquptzx.TabDemo.MainActivity.InitImageView(MainActivity.java:76)
08-18 20:09:24.462: E/AndroidRuntime(569):     at edu.cquptzx.TabDemo.MainActivity.onCreate(MainActivity.java:37)
08-18 20:09:24.462: E/AndroidRuntime(569):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-18 20:09:24.462: E/AndroidRuntime(569):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
08-18 20:09:24.462: E/AndroidRuntime(569):     ... 11 more

定位錯誤:

我們知道是

java.lang.NullPointerException

空指針異常.
為什么會是空指針異常呢?

想起自己在更改源碼的時候有一行是這么寫的:

image

改成了

image之所以這么修改,是因為作者在給資源命名的時候,使用了無意義的字母命名,我將圖片資源誤更改為了顏色.(注:圖片資源在第一作者源碼里,

image

然而我依照http://www.2cto.com/kf/201208/148253.html新建的工程,沒有使用圖片資源.)  

 

 

 

解決的辦法是:

引用任意一張圖片資源即可,這里就直接引用了"ic_launcher"

bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)
               .getWidth();

 

============================================

最后,總結下最快捷實現第一作者的效果:

1.下載第一作者的源碼,http://115.com/file/dpi0unyg

2.導入到工程.

3.直接添加jar包(包在libs里)

4部署到模擬器/手機.

 

 

---------------------------------------------------------

頁面事件測試:

效果圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM