- 博客(55)
- 资源 (37)
- 收藏
- 关注
原创 Kotlin 集合过滤函数
val list = listOf(4,5,1, 2, 3,2,5,3 ,4,5,6,7,8)drop(n):去除前n个元素drop(3):listOf( 2, 3,2,5,3 ,4,5,6,7,8)dropLast(n):去除最后n个元素dropLast(3):listOf(4,5,1, 2, 3,2,5,3 ,4,5)dropWhile{}:去除从前面开始满足条件的元素直到第一个不满足条件的元素为止(如果第一个元素即不满足条件,则全部返回)dropWhile{it>..
2020-09-15 10:24:06
1603
原创 使用JsonDeserializer自适应平台同字段不同类型数据
通过使用Gson可以方便将json串自动映射为bean对象,方便快捷,但是平台数据可能会出现同字段不同类型时,bean该如何自适应,这里我的解决方法是使用JsonDeserializer手动解析。直接上实例:修改前的bean:private String price;修改前的json中price可能是string,也可能是arraylist。修改后:删除private St...
2019-12-27 09:34:58
4267
原创 activity生命周期的一个坑
今天项目中碰到一个和activity生命周期有关的坑,特此记录。背景:activity launchMode="singlenInstance",在多次启动关闭后,在最后一次关闭(调用finish),生命只走到了onPause,此时再次launch后,这两次的生命周期变成:onCreate--->onResume----->onPause------->onCreate---...
2019-08-23 15:04:27
262
转载 android anr traces日志分析方法
一:什么是ANRANR:Application Not Responding,即应用无响应二:ANR的类型ANR一般有三种类型:1:KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应2:BroadcastTimeout(10 seconds)BroadcastReceiver在特定时间内无法处理完成3:Servi...
2018-08-30 18:02:22
2178
原创 解决activity页面切换背景界面会闪一下
最近项目中发现的问题:现象:home界面是一个listview,item点击后启动相应的activity,就是如此简单,但是,如果同一时间内连续点击item,会发生home界面闪退,回到背景页面,然后相应的activity被启动。原因:application主题中设置了android:windowIsTranslucent =true,这回导致A跳转到B时,B相当于一个半透明的dialog...
2018-08-10 09:53:20
6881
原创 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
1660
原创 巧妙的弥补ExpandableListview没有OnChildLongClickListener的遗憾
总所周知,ExpandableListview没有子项的长按监听事件,也就是没有OnChildLongClickListener。目前只有OnItemLongClickListener,这个监听回调方法中,只有一个position,这是因为系统会把当前展开的项,包括parent和child按顺序展示,也可以说当做一个普通的listview,那么如何知道当前长按子项的具体位置呢?可以用下面这个方
2017-11-24 14:21:43
283
原创 android中的事件拦截机制
现有ViewGroupA,ViewGroupB,View,布局中的嵌套关系是ViewGroupA为最外层的父控件,ViewGroupB是其下面的子控件,View则为ViewGroupB下面的子控件。对于ViewGroup来说,可以重写一下三个方法:@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) { retu
2017-03-30 10:05:41
330
原创 Activity启动模式详解
Activity的启动模式共有四种:standard,singleTop,singleTask,singleInstance!1,standard:默认的启动模式,每当启动新的活动,它都会在返回栈中入栈,并处于栈顶,看代码:public class FirstActivity extends AppCompatActivity { @Override prot
2017-03-07 14:38:53
287
原创 打造通用的Adapter为RecyclerView服务
1,创建一个点击事件的接口public interface OnItemClickListener { void onItemClick(int position);}2,创建一个长按事件的接口:public interface OnItemLongClickListener { boolean onItemLongClick(int position
2017-03-02 14:37:58
459
转载 ButterKnife新版 8.4.0的配置问题
ButterKnife是一个专注于Android系统的View注入框架,能够简化代码,再也不用写大量的findViewById以及setOnClickListener代码,这东东真心不错哦,很方便,啧啧啧。原本以为,用AndroidStudio使用ButterKnife只要在项目中的Module:app的gradle文件中加入compile'com.jakewharton:butterkn
2017-01-19 18:02:34
6920
转载 重写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
5819
原创 不用线程实现倒计时
需求:有多个组件可以开启倒计时,正常情况下默认倒计时时间终了后更新UI,另,用户可以取消指定倒计时。这里使用CountDownTimer进行倒计时,其中回调函数onFinish是在倒计时终了时回调,onTick是在倒计时开始时回调,用户可以使用CountDownTimer对象的cancel方法取消倒计时。这样做的好处:不需要使用繁琐的线程去控制倒计时,更方便的进行UI更新。上代码:
2017-01-09 10:37:20
486
原创 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
3754
1
原创 简单使用Glide加载网络图片
Glide是谷歌为我们介绍的一个第三方的图片加载库,图片加载已知url的网络图片只需一句话首先是下载Glide库,choose Library Dependency中输入glide输入后,回车,选择等导入成功后就可以使用了简单使用就一句话:Glide.with(view.getContext()).load
2016-08-26 11:19:41
8912
原创 AnimationSet.setRepeatCount无效问题
AnimationSet scaleanimationSet = new AnimationSet(true);ScaleAnimation scaleAnimation = new ScaleAnimation(1f,2f,1f,2f,Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f);scale
2016-08-18 10:25:30
4216
转载 CSS如何画出一个三角形
这是一个普通的 div ,一个边长为 100px 的正方形,border 宽度为 10px, 没有任何技术含量,地球人都会画。我们知道 border 是分为 top、right、bottom、left 的,那么这个矩形的四个边是怎样划分的呢?显然,要想公平地分割四条边框,只有这样:所以我们如果把上、左、右三条边隐藏掉(颜色设为 transparent),会怎样呢?
2016-07-28 17:47:14
1207
转载 Android高效加载大图、多图解决方案,有效避免程序OOM
高效加载大图片我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状、不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小。比如说系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多。大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。我们可
2016-06-08 16:42:09
355
原创 Android-PullToRefresh-master使用心得
关于上拉下拉加载,网络上使用很多的是国外大神发布的Android-PullToRefresh,确实方便很多,现在来谈谈使用心得:1:源码下载:https://github.com/chrisbanes/Android-PullToRefresh2:环境配置:将压缩文件解压后, 把\Android-PullToRefresh-master 下的library拷贝到和主工程
2016-04-06 18:26:32
1707
原创 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
6642
原创 自定义dialog实现窗口四个直角变为弧形
首先,在自定义dialog的布局文件中添加: android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/confirm_dialog_bg" android:orientation="vertical" >
2016-02-23 13:58:31
1716
原创 详细理解android中9png的制作
1,打开\sdk\tools中draw9patch.bat工具,把需要制作的png拖入其中:2,描绘黑线:下线和右线区域是内容显示区域,上线和左线是拉伸区域:3,下图灰色是右线表示的内容在垂直方向显示的区域:4,下图灰色是下线表示内容显示的横向的显示区域,和3中垂直方向交叉的部分就是内容显示的区域
2016-02-18 16:05:13
397
原创 巧妙解决百度地图在合适视野范围内显示所有的点
先上代码: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
13574
转载 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
650
原创 listview不能刷新显示数据(有数据的情形下)
今天遇到一个小问题,但却调查了好久。。。。汗。。。activity中有两个fragment,在activity的布局文件中定义了一个layout被两个fragment共同使用。fragment中的listview刷新时一直不能显示数据,adapter中getCount方法可以被调用,显示数据两条,但getView方法一直不能被调用,界面也不能显示数据。调查后发现原因如下:lis
2015-12-09 18:32:08
931
转载 android Application值得注意的几个地方
1:Application是什么? Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 A
2015-10-26 14:16:33
628
原创 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
1606
原创 android应用性能提升之adapter
android应用中用户滑动list,会回调adapter中的getView方法,这里不能每个item都去创建一个view,因此需要在getView开始的地方判断第二个参数view是否为空。如果为空,则需去调用inflate()方法创建新的view,如果不为空,则直接使用第二个参数view。好了,如果一个界面有两个以上的view需要切换,那么以上提升性能的方式就不正确了。这时需要在
2015-07-22 14:16:46
569
原创 selector无效
目前项目碰到一个UI问题,一个button点击的时候字体颜色由黑色变为蓝色,于是在xml文件中针对该button的android:textColor属性设置了一个selector,但是发现字体颜色在按钮按下的时候不会变成蓝色,纠结了很久发现了原因是在java中使用了setTextColor方法,setTextColor方法设定的也是xml中用到的selector,但这样会使该selector失效~
2015-07-20 11:27:12
597
原创 listview上拉加载上一页 下拉加载下一页共通处理
先什么都不说了,上效果图:第一页默认显示:上拉加载下一页:拉至一定高度:松开 加载中:下拉加载上一页:下拉至一定高度:松开 加载中:代码已经上传:http://download.youkuaiyun.com/detail/zengchao2013/
2015-06-25 14:35:37
1360
原创 获取手机联系人,并通过拼音字母快速查询
获取手机联系人,并通过拼音字母快速查询。通过工具类转换联系人首字的首字母,并排序显示。通过画布的方式在布局右侧添加快速查询的字母布局显示效果如下图:右侧点击【★】时回到顶部:滑动到【N】时N开头的联系人置顶代码:通过画布的方式在布局右侧添加快速查询的字母布局http://download.youkuaiyun.com/detail/zengc
2015-05-29 09:28:13
1970
转载 Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
概述:每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主线程通常又叫UI线程。而由于Android采用UI单线程模型,所以只能在主线程中对UI元素进行操作。如果在非UI线程直接对UI进行了操作,则会报错:CalledFromWrongThreadException:only the
2014-11-12 18:15:51
452
转载 在命令行中通过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
764
转载 Android实战技巧:ViewStub的应用
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Infl
2014-08-06 11:09:56
647
转载 andorid ANR keyDispatchingTimedOut的原因和解决之道
Android最佳实践之响应灵敏性可能会存在这样的情况,你写的代码通过了世界上所有的性能测试,但当用户尝试使用你的应用程序时,仍然让用户感到不爽。应用程序响应不够灵敏的地方包括——反映迟钝,挂起或冻结很长时间,或者需要花费很长的时间来处理输入。 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Ap
2014-07-26 15:30:47
700
原创 对HashMap的value排序
HashMap sMap = new HashMap(); sMap.put("张三", 90L); sMap.put("李四", 79L); sMap.put("王五", 88L); sMap.put("赵六", 76L); ArrayList> list = new ArrayList>(sMap.entrySet()); Collections
2014-05-28 17:15:48
753
原创 回调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
1600
转载 android 默认铃音试听时不停循环播放
最近看到ringtones文件夹里面有的铃声文件很短,适合做短信通知铃声,就直接把这个铃声直接设置成短信铃声了,没想到来消息了之后,铃声一直响个没完没了,仔细研究了一番,终于发现问题了, 安桌铃声的循环播放不是系统决定的,而是在铃声文件上面做了ANDROID_LOOP的标记,而ringtones文件夹里面的铃声文件一般都有ANDROID_LOOP的标记,所以不适合直接拿来当短
2014-04-04 14:17:13
1853
1
listview上拉下拉加载自动刷新
2015-06-25
网页制作完全手册
2013-02-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人