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部署到模拟器/手机.

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

页面事件测试:

效果图:

原文地址:https://www.cnblogs.com/xilifeng/p/2645783.html