当前位置:  编程技术>移动开发
本页文章导读:
    ▪各位看过来–ViewPager在4.0上存在的兼容性有关问题        各位看过来–ViewPager在4.0下存在的兼容性问题 通过查看统计平台反馈回来的错误报告,发现在android 4.0系统下,Viewpager屡屡报错。原因与Viewpager中包含有自定义Listview有关,而原生的Listview控.........
    ▪ 点击listitem按上效果替换默认颜色        点击listitem按下效果替换默认颜色在drawable中新建一个xml文件 customer.xml: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:.........
    ▪ 最终贪吃蛇       终极贪吃蛇   前几天,终于把我们的游戏做好了。我想着把它放在GoogleMarket上挺麻烦,就先把它放在安卓市场上了。有没有大神告诉我具体怎么把这放到google Market上?太感谢了。    我介.........

[1]各位看过来–ViewPager在4.0上存在的兼容性有关问题
    来源: 互联网  发布时间: 2014-02-18
各位看过来–ViewPager在4.0下存在的兼容性问题

通过查看统计平台反馈回来的错误报告,发现在android 4.0系统下,Viewpager屡屡报错。原因与Viewpager中包含有自定义Listview有关,而原生的Listview控件不会报错。Viewpager中存放着四个自定义的Listview(下拉刷新),在切换的过程中就会崩溃,如图:

 出错位置在PagerAdapter的destroyItem方法中,会报java.lang.IllegalArgumentException: The observer is null 错误,堆栈信息如下,请仔细看:

java.lang.IllegalArgumentException: The observer is null.
at android.database.Observable.unregisterObserver(Observable.java:59)
at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)
at android.widget.HeaderViewListAdapter.unregisterDataSetObserver(HeaderViewListAdapter.java:256)
at android.widget.AbsListView.onDetachedFromWindow(AbsListView.java:2309)
at android.view.View.dispatchDetachedFromWindow(View.java:8197)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1968)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1966)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3257)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3237)
at android.view.ViewGroup.removeView(ViewGroup.java:3185)
at com.aheudev.a.slickdeals.adapters.DealPageAdapter.destroyItem(DealPageAdapter.java:174)
at android.support.v4.view.ViewPager.populate(ViewPager.java:415)
at android.support.v4.view.ViewPager.completeScroll(ViewPager.java:696)
at android.support.v4.view.ViewPager.computeScroll(ViewPager.java:668)
………………………………
………………………………


 

  

而这些错误来源于我们复写的PagerAdapter中的这个方法:

@Override
public void destroyItem(View collection, int position, Object view) {
    ((ViewPager) collection).removeView((View) view);
}


 

首先我们来说一下解决方法:

 原因是Listview的adapter 中的unregisterDataSetObserver方法被调用了两次,导致observer为空。我们只要复写与Listview绑定的适配器中的unregisterDataSetObserver方法即可,在其中做一个非空判断即可。按如下代码:

 

@Overridepublic void unregisterDataSetObserver(DataSetObserver observer) {  
  if (observer != null) {     
   super.unregisterDataSetObserver(observer); 
   }
}

错误分析:
   
  仔细观察堆栈信息红色部分发现,错误的源头来源于BaseAdapter.unregisterDataSetObserver方法。
  经过Log 大概了解到,在滑动过程中viewpager会移除不在视野范围内的View。

  如上图,比如移动到第三个tab页,会把第一个tab页中的view移除;移动到第四个tab页会把第二个tab页中的view移除掉。当我们再次移动到第三个tab页时,Viewpager依旧会将第一个tab页中的View移除……
  有移除就有添加,本来这没有什么。但是通过Log打印的信息,我发现在android 4.0中,Viewpager除了移除View中的列表组件Listview之外,还同时多做了一件事情,那就是调用列表组件Listview的适配器Adapter的unregisterDataSetObserver方法,移除了与适配器绑定数据集观察者DataSetObserver ,也就是那个observer。但是在4.0以下的系统中,ViewPager没有移除列表组件Listview的数据集观察者observer。
  所以当再次移动到第三个tab时,会继续卸载位于第一个位置tab中的listview的观察者 ,这时因为观察者已经被卸载为空,而报非法的参数错误。
  让人疑惑的就是4.0下:原生的Listview在移除观察者时,没有任何问题。自定义的Listview在移除观察者时,就会报以上的堆栈信息。如果有哪位大虾知道出现这种不兼容原因,欢迎指教。

   参考资料:http://stackoverflow.com/questions/7290841/java-lang-illegalargumentexception-the-observer-is-null


  原文链接:http://www.67tgb.com/?p=495    

   欢迎访问:望月听涛


    
[2] 点击listitem按上效果替换默认颜色
    来源: 互联网  发布时间: 2014-02-18
点击listitem按下效果替换默认颜色

在drawable中新建一个xml文件

customer.xml:

<?xml version="1.0" encoding="utf-8"?>  
<selector   
    xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:state_pressed="true">  
        <color android:color="#d3d8dc"/>  
    </item>  
    <item android:state_pressed="false">  
        <color android:color="#00000000"/>  
    </item>  
</selector> 

在listview的item中使用此背景图片

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/customer" 
     >
    
    <LinearLayout
            android:id="@+id/textv_no_result_linear"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/list_row_height"
            android:gravity="right|center_vertical"
            android:orientation="horizontal" >
            
            <ImageView
                android:id="@+id/textv_no_result_img"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="10dp"
                 />
            
            <TextView
                android:id="@+id/textv_no_result_txt"
                android:layout_width="fill_parent"
                android:layout_height="@dimen/list_row_height"
                android:gravity="center_vertical"
                android:paddingLeft="10dip"
                android:textColor="@color/search_no_result_text"
                android:textSize="@dimen/list_row_textsize_big" />
        </LinearLayout>

</LinearLayout>



    
[3] 最终贪吃蛇
    来源: 互联网  发布时间: 2014-02-18
终极贪吃蛇

   前几天,终于把我们的游戏做好了。我想着把它放在GoogleMarket上挺麻烦,就先把它放在安卓市场上了。有没有大神告诉我具体怎么把这放到google Market上?太感谢了。

   我介绍一下这款游戏吧。 

         1、三种游戏模式
        2、经典模式,不断的解锁关卡
        3、竞技模式,在60s内尽可能获得最高分数
        4、abc模式,单词记忆
        5、当前界面分享到新浪人人

 ABC模式。

 

经典模式

竞技模式

   感觉游戏做的是挺好的。欢迎大家试玩。如果有需要,我可以公布部分源码给大家,欢迎大家来提提意见。让我把这个贪吃蛇更加完善。

  下载地址:http://static.apk.hiapk.com/html/2012/07/720966.html

  求推广。求完善。

欢迎交流


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3