android
圣保罗
这个作者很懒,什么都没留下…
展开
-
使用JsonDeserializer自适应平台同字段不同类型数据
通过使用Gson可以方便将json串自动映射为bean对象,方便快捷,但是平台数据可能会出现同字段不同类型时,bean该如何自适应,这里我的解决方法是使用JsonDeserializer手动解析。直接上实例:修改前的bean:private String price;修改前的json中price可能是string,也可能是arraylist。修改后:删除private St...原创 2019-12-27 09:34:58 · 4194 阅读 · 0 评论 -
Android-PullToRefresh-master使用心得
关于上拉下拉加载,网络上使用很多的是国外大神发布的Android-PullToRefresh,确实方便很多,现在来谈谈使用心得:1:源码下载:https://github.com/chrisbanes/Android-PullToRefresh2:环境配置:将压缩文件解压后, 把\Android-PullToRefresh-master 下的library拷贝到和主工程原创 2016-04-06 18:26:32 · 1680 阅读 · 0 评论 -
EditText中android:digits失效问题
需求:密码输入要求指定字符串,画面中可以切换密码显示与隐藏原先代码如下:xml: android:id="@+id/set_password_txt" android:layout_width="0dp" android:layout_height="wrap_conte原创 2016-03-22 18:37:45 · 6563 阅读 · 0 评论 -
详细理解android中9png的制作
1,打开\sdk\tools中draw9patch.bat工具,把需要制作的png拖入其中:2,描绘黑线:下线和右线区域是内容显示区域,上线和左线是拉伸区域:3,下图灰色是右线表示的内容在垂直方向显示的区域:4,下图灰色是下线表示内容显示的横向的显示区域,和3中垂直方向交叉的部分就是内容显示的区域原创 2016-02-18 16:05:13 · 370 阅读 · 0 评论 -
listview不能刷新显示数据(有数据的情形下)
今天遇到一个小问题,但却调查了好久。。。。汗。。。activity中有两个fragment,在activity的布局文件中定义了一个layout被两个fragment共同使用。fragment中的listview刷新时一直不能显示数据,adapter中getCount方法可以被调用,显示数据两条,但getView方法一直不能被调用,界面也不能显示数据。调查后发现原因如下:lis原创 2015-12-09 18:32:08 · 899 阅读 · 0 评论 -
巧妙解决百度地图在合适视野范围内显示所有的点
先上代码:mBaiduMap.setOnMapLoadedCallback(new OnMapLoadedCallback() {@Overridepublic void onMapLoaded() {// 路线LatLng p1 = new LatLng(31.209933, 121.608515);LatLng p2 = new LatLng(30.905841, 12原创 2016-01-04 16:00:24 · 13512 阅读 · 0 评论 -
Listview中嵌套gridview只显示一行的问题
问题:当listview中嵌套gridview时,gridview只显示一行、方案:重写gridviewpublic class MyGridView extends GridView{ public MyGridView(Context context, AttributeSet attrs) { super(context, a转载 2015-12-28 18:04:58 · 630 阅读 · 0 评论 -
android sqlite3命令查询及修改数据
使用adb命令方便快捷的查询sqlite数据库中表的值,直观的显示并修改数据!1,adb shell2,cd /data/data/3,ls 查看应用的文件夹4,进入应用的文件夹5,cd databases 进入该应用下的databases目录,ls 可以看到db名称原创 2015-09-25 13:52:54 · 1571 阅读 · 0 评论 -
android Application值得注意的几个地方
1:Application是什么? Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 A转载 2015-10-26 14:16:33 · 610 阅读 · 0 评论 -
CollapsingToolbarLayout之layout_scrollFlags
当我们在AppBar中使用可折叠的ToolBar---CollapsingToolbarLayout时,其中有一个属性app:layout_scrollFlags有三个值:app:layout_scrollFlags="scroll|exitUntilCollapsed" recyclerview上拉时不能完全折叠app:layout_scrollFlags="scr原创 2016-08-31 16:58:07 · 3688 阅读 · 1 评论 -
简单使用Glide加载网络图片
Glide是谷歌为我们介绍的一个第三方的图片加载库,图片加载已知url的网络图片只需一句话首先是下载Glide库,choose Library Dependency中输入glide输入后,回车,选择等导入成功后就可以使用了简单使用就一句话:Glide.with(view.getContext()).load原创 2016-08-26 11:19:41 · 8840 阅读 · 0 评论 -
activity生命周期的一个坑
今天项目中碰到一个和activity生命周期有关的坑,特此记录。背景:activity launchMode="singlenInstance",在多次启动关闭后,在最后一次关闭(调用finish),生命只走到了onPause,此时再次launch后,这两次的生命周期变成:onCreate--->onResume----->onPause------->onCreate---...原创 2019-08-23 15:04:27 · 237 阅读 · 0 评论 -
解决activity页面切换背景界面会闪一下
最近项目中发现的问题:现象:home界面是一个listview,item点击后启动相应的activity,就是如此简单,但是,如果同一时间内连续点击item,会发生home界面闪退,回到背景页面,然后相应的activity被启动。原因:application主题中设置了android:windowIsTranslucent =true,这回导致A跳转到B时,B相当于一个半透明的dialog...原创 2018-08-10 09:53:20 · 6681 阅读 · 0 评论 -
Fragment setArguments时的 Fragment already active错误
Fragment setArguments时的java.lang.IllegalStateException: Fragment already active异常主要是使用setArguments()传递参数导致的:在 Fragment 没有被添加到 FragmentManager 之前,我们可以通过 Fragment.setArguments() 来设置参数,并在 Fragment 中,使用 g...原创 2018-04-27 11:36:41 · 1585 阅读 · 0 评论 -
巧妙的弥补ExpandableListview没有OnChildLongClickListener的遗憾
总所周知,ExpandableListview没有子项的长按监听事件,也就是没有OnChildLongClickListener。目前只有OnItemLongClickListener,这个监听回调方法中,只有一个position,这是因为系统会把当前展开的项,包括parent和child按顺序展示,也可以说当做一个普通的listview,那么如何知道当前长按子项的具体位置呢?可以用下面这个方原创 2017-11-24 14:21:43 · 259 阅读 · 0 评论 -
android中的事件拦截机制
现有ViewGroupA,ViewGroupB,View,布局中的嵌套关系是ViewGroupA为最外层的父控件,ViewGroupB是其下面的子控件,View则为ViewGroupB下面的子控件。对于ViewGroup来说,可以重写一下三个方法:@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) { retu原创 2017-03-30 10:05:41 · 299 阅读 · 0 评论 -
Activity启动模式详解
Activity的启动模式共有四种:standard,singleTop,singleTask,singleInstance!1,standard:默认的启动模式,每当启动新的活动,它都会在返回栈中入栈,并处于栈顶,看代码:public class FirstActivity extends AppCompatActivity { @Override prot原创 2017-03-07 14:38:53 · 264 阅读 · 0 评论 -
重写ViewPager实现Scrollview嵌套ViewPager高度自适应
public class MyViewPager extends ViewPager { public MyViewPager(Context context) { super(context); } /** * Constructor * * @param context the c转载 2017-01-12 15:24:29 · 5791 阅读 · 0 评论 -
不用线程实现倒计时
需求:有多个组件可以开启倒计时,正常情况下默认倒计时时间终了后更新UI,另,用户可以取消指定倒计时。这里使用CountDownTimer进行倒计时,其中回调函数onFinish是在倒计时终了时回调,onTick是在倒计时开始时回调,用户可以使用CountDownTimer对象的cancel方法取消倒计时。这样做的好处:不需要使用繁琐的线程去控制倒计时,更方便的进行UI更新。上代码:原创 2017-01-09 10:37:20 · 458 阅读 · 0 评论 -
android应用性能提升之adapter
android应用中用户滑动list,会回调adapter中的getView方法,这里不能每个item都去创建一个view,因此需要在getView开始的地方判断第二个参数view是否为空。如果为空,则需去调用inflate()方法创建新的view,如果不为空,则直接使用第二个参数view。好了,如果一个界面有两个以上的view需要切换,那么以上提升性能的方式就不正确了。这时需要在原创 2015-07-22 14:16:46 · 554 阅读 · 0 评论 -
selector无效
目前项目碰到一个UI问题,一个button点击的时候字体颜色由黑色变为蓝色,于是在xml文件中针对该button的android:textColor属性设置了一个selector,但是发现字体颜色在按钮按下的时候不会变成蓝色,纠结了很久发现了原因是在java中使用了setTextColor方法,setTextColor方法设定的也是xml中用到的selector,但这样会使该selector失效~原创 2015-07-20 11:27:12 · 560 阅读 · 0 评论 -
listview上拉加载上一页 下拉加载下一页共通处理
先什么都不说了,上效果图:第一页默认显示:上拉加载下一页:拉至一定高度:松开 加载中:下拉加载上一页:下拉至一定高度:松开 加载中:代码已经上传:http://download.csdn.net/detail/zengchao2013/原创 2015-06-25 14:35:37 · 1320 阅读 · 0 评论 -
TelephonyManager类使用方法大全
这个类是很有用地,可以得到很多关于手机的信息,做应用时必须的工具。不废话,直接上注释后的代码,请享用:/****@author dingran*创建日期 2010-4-29 下午05:02:47**/package net.sunniwell.app;import android.app.Activity;im转载 2013-10-11 16:09:40 · 620 阅读 · 0 评论 -
解读Notification在未接来电中的使用
先看看Phone中的源码:// make the notification Notification note = new Notification( R.drawable.pic_icon_missed_call, mContext.getString(R.string.notification_mi原创 2013-09-18 16:52:04 · 1372 阅读 · 0 评论 -
getSystemService()介绍
getSystemService()是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。 传入的Name返回的对象说明WINDOW_SERVICEWindowManager管理打开的窗口程序LAYOUT转载 2013-08-23 13:35:41 · 749 阅读 · 0 评论 -
Android LayoutInflater作用及使用
作用: 1、对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入. 2、对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findViewById方法来获得其中的界面元素. 方法: Android里面想要创建一个画面的时候, 初学一般都是新建一个类, 继承Activity基类, 然后在onCreate里面使用setCo转载 2013-07-22 10:29:20 · 448 阅读 · 0 评论 -
Handler 消息传递机制
众所周知,Android的UI操作并不是线程安全的,这就意味着如果有多个线程并发操作UI组件,可能导致线程安全问题,为了解决这个问题,Android制定了一条简单的规则:只允许UI线程修改Activity里的UI组件。 Handler类的主要作用有两个:一是在新启动的线程中发送消息二是在主线程中获取,处理消息。关键的问题是,怎么让主线程适时地处理新启动的线程发送的消息,显然只能通原创 2013-07-18 15:06:24 · 434 阅读 · 0 评论 -
来电界面异常
最近在做android源码Phone的定制,期间来电的时候会遇到一个异常,查了很久才解决,先上Log:W/ResourceType( 163): Failure getting entry for 0x7f04000f (t=3 e=15) in package 0 (error -75)D/AndroidRuntime( 163): Shutting down VMW/d原创 2013-07-16 11:16:07 · 900 阅读 · 0 评论 -
android 根据电话模糊查询姓名
public void getName() {// 获取输入的电话号码 String incomingNumber = mDigits.getText().toString().replace(" ", "");ContentResolver contentResolver = mContext.getContentResolver();Cursor cursor =原创 2013-06-25 16:57:43 · 1762 阅读 · 0 评论 -
android EditText 隐藏软键盘(输入法不显示),并且显示光标
如果你是android版本是4.0以上,直接用editText..setShowSoftInputOnFocus(false), 这样可以隐藏输入法且有光标如果是4.0以下的android版本,在AndroidManifest.xml的Acticity里面添加属性:android:windowSoftInputMode="adjustPan|stateHidden"在编辑框原创 2013-07-08 19:03:55 · 1921 阅读 · 1 评论 -
在SDCard中用文件记录android的异常信息
以下为异常捕捉处理代码: [java] view plaincopyprint?import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException;转载 2013-11-26 16:36:11 · 677 阅读 · 0 评论 -
android app 启动会白屏的解决办法
原因:由于Activity只能到onResume时,才能展示到前台,所以,如果为MAIN activity设置背景的话,无论onCreate-onResume速度多快,都会出现短暂的白屏。解决办法:1:只要在配置文件内activity属性配置内加上android:theme="@android:style/Theme.Translucent" 就好了。这样就调用了android的透明样原创 2014-02-18 10:32:16 · 727 阅读 · 0 评论 -
获取手机联系人,并通过拼音字母快速查询
获取手机联系人,并通过拼音字母快速查询。通过工具类转换联系人首字的首字母,并排序显示。通过画布的方式在布局右侧添加快速查询的字母布局显示效果如下图:右侧点击【★】时回到顶部:滑动到【N】时N开头的联系人置顶代码:通过画布的方式在布局右侧添加快速查询的字母布局http://download.csdn.net/detail/zengc原创 2015-05-29 09:28:13 · 1886 阅读 · 0 评论 -
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
概述:每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主线程通常又叫UI线程。而由于Android采用UI单线程模型,所以只能在主线程中对UI元素进行操作。如果在非UI线程直接对UI进行了操作,则会报错:CalledFromWrongThreadException:only the转载 2014-11-12 18:15:51 · 422 阅读 · 0 评论 -
在命令行中通过adb shell am broadcast发送广播通知
通过命令行执行adb shell am broadcast发送广播通知。adb shell am broadcast 后面的参数有:[-a ][-d ][-t ] [-c [-c ] ...] [-e|--es ...] [--ez ...] [-e|--ei ...] [-n ][-f ] []例如转载 2014-10-24 10:38:52 · 733 阅读 · 0 评论 -
Android实战技巧:ViewStub的应用
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Infl转载 2014-08-06 11:09:56 · 611 阅读 · 1 评论 -
andorid ANR keyDispatchingTimedOut的原因和解决之道
Android最佳实践之响应灵敏性可能会存在这样的情况,你写的代码通过了世界上所有的性能测试,但当用户尝试使用你的应用程序时,仍然让用户感到不爽。应用程序响应不够灵敏的地方包括——反映迟钝,挂起或冻结很长时间,或者需要花费很长的时间来处理输入。 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Ap转载 2014-07-26 15:30:47 · 671 阅读 · 0 评论 -
一个解决字符过长显示问题的属性
相信很多做android的遇到过这个简单的问题,当汉字guoc原创 2014-07-23 10:53:02 · 1074 阅读 · 0 评论 -
回调Service中的onstart方法时发生空指针异常
先来看一段代码:@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {mAccType = intent.getIntExtra("acc_type", -1);AnsyTry mAnsy = new AnsyTry();mAnsy.execute("sync");ret原创 2014-04-08 16:10:39 · 1567 阅读 · 0 评论 -
android 默认铃音试听时不停循环播放
最近看到ringtones文件夹里面有的铃声文件很短,适合做短信通知铃声,就直接把这个铃声直接设置成短信铃声了,没想到来消息了之后,铃声一直响个没完没了,仔细研究了一番,终于发现问题了, 安桌铃声的循环播放不是系统决定的,而是在铃声文件上面做了ANDROID_LOOP的标记,而ringtones文件夹里面的铃声文件一般都有ANDROID_LOOP的标记,所以不适合直接拿来当短转载 2014-04-04 14:17:13 · 1767 阅读 · 1 评论