zoukankan      html  css  js  c++  java
  • 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部署到模拟器/手机.

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

    页面事件测试:

    效果图:

  • 相关阅读:
    平衡二叉树之RB树
    平衡二叉树之AVL树
    实现哈希表
    LeetCode Median of Two Sorted Arrays
    LeetCode Minimum Window Substring
    LeetCode Interleaving String
    LeetCode Regular Expression Matching
    PAT 1087 All Roads Lead to Rome
    PAT 1086 Tree Traversals Again
    LeetCode Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/xilifeng/p/2645783.html
Copyright © 2011-2022 走看看