- 博客(413)
- 资源 (9)
- 收藏
- 关注
原创 Android 长按3Dtouch快捷方式
android 7.0新特性,类似iPhone的3Dtouch,长按app桌面图标会弹出快捷方式,效果如下:[外链图片转存失败(img-VebB3ppw-1563540930965)(C:\Users\lagou\AppData\Roaming\Typora\typora-user-images\1563519777526.png)]引入快捷方式:Shortcuts两种方式:静态xml和动态...
2019-07-19 20:58:31
943
原创 RecycleView的remove动画闪屏
场景:收藏列表(RecyclerView),点击Item上的取消收藏按钮可删除该Item,带移除动画,当Item从满屏删除到不满屏的临界时刻,移除动画消失,会闪屏。分析:①取消收藏会调用notifyItemRemoved(position);②满屏到不满屏临界时刻,会重新发起该页请求,请求结束使用了notifyDataSetChanged()怀疑是 notifyItemRemoved尚未完...
2019-07-19 18:10:40
739
原创 Android使用Parcelable注意事项
想要在两个activity之间使用Intent传递对象,此时被传递对象就必须序列化,在android中序列化一个对象有两种方式,一种是实现Serializable接口,这个非常简单,只需要声明一下就OK了,无痕介入。此外android中还有一种特有的序列化方法,那就是实现Parcelable接口,使用这种方式来序列化的效率要高于实现Serializable接口。不过Serializable接口实在...
2019-06-06 12:29:47
1188
原创 Glide加载Gif圆角图多次后出现黑边
使用Glide加载Gif图且要求圆角图时,加载多次发现圆角背后多了黑色方角,说具体点就是首次加载会有圆角,第二次加载就会圆角+方角黑边。就像这样:到这里,问题也描述的差不多了,有遇到同样问题&心急的朋友可能反手就是一拖鞋先给解决方案:加上.diskCacheStrategy(DiskCacheStrategy.SOURCE)即可。下面是顺便记录下圆角实现过程和遇到的疑惑点:Gl...
2019-05-27 11:08:08
2954
原创 RecyclerView选中Item滚动到屏幕中间 / 指定位置
产品需求,点击标签变成选中态,且被选中标签 自动滑到屏幕中间,如图所示:1.如何实现自动滑动到屏幕中间?2.如何避免闪动?3.滑动速度如何控制?一,自动滑动到屏幕中间:RecyclerView中最容易想到的方法是smoothScrollToPosition(int position),可是position该是多少呢?显然这个方法行不通。设置滑动还要从LinearLayoutManag...
2019-05-22 18:02:54
35593
19
原创 Android验证码输入框支持粘贴
验证码输入框,满足剪切板内容自动填充,看效果原本做法是6个EditText,后来发现,这样写最大问题是,无法满足粘贴功能,验证码短信 一般都带“复制”,如果牺牲掉了验证码粘贴功能 确实有点操蛋。先聊聊思路:1.首先想到 写一个EditText,然后setBackground()为6个框,字间距刚好让每个数字处于框中间;然而字间距的方法没找到合适的,此路不通。2.我打开滴滴,美团,结果大厂...
2019-04-04 20:25:11
10411
17
原创 ListView滑动到指定位置smoothScrollToPositionFromTop
开发需求:listView平滑滑动到指定位置,然后弹出一个展开框;1.为了“平滑滑动”,于是我把写好的setSelection(position)改成smoothScrollToPosition(int position),可是死活找不到smoothScrollToPosition(int position)动画end监听,没有这个监听的话 无法获知何时弹出展开框。2.如果要知道smooth的...
2019-02-14 12:14:43
6277
原创 ListView禁止上下滑动,不影响点击
有个需求,ListView列表支持筛选。点击筛选Tabs时候,在Tabs下方弹出FilterCard,遮盖在ListView列表上层,此时不能滑动Tabs,否则界面好尴尬,只有FilterCard消失时候,列表才回复滑动。已知Tabs是listView的一个HeaderView。要求Tabs支持点击切换,但是不能上下滑动,此刻要做的就是监听FilterCard的可见性,VISIBLE时候禁止上下滑...
2019-02-14 11:39:52
6306
原创 关于Java自动装箱拆箱的面试题
问:请写出运行结果? Long l1 = 128L; Long l2 = 128L; System.out.println(l1 == l2); //1 System.out.println(l1 == 128L); //2 Long l3 = 127L; ...
2019-01-27 18:11:45
2225
2
原创 找出单身狗:有2n+1个数,其中有n个数出现过两次,找出其中只出现一次的数
/** * 任何数异或0值不变,任何数与自己异或值为0。 * 因此一个数两次异或同一个数,值不变。 */ public void findSingle() { int[] arr = {1, 2, 3, 4, 5, 4, 3, 2, 1}; int t = arr[0]; for (int i = 1;...
2019-01-27 16:14:48
1167
原创 List截取
/** * 截取list,保留前l位 * Examples: * list = [0, 1, 2, 3, 4, 5] * subList(list, 3); * list = [0, 1, 2] * * @param list 待截取list * @param newLength 保留前length...
2019-01-25 20:09:27
1931
原创 String字符串去重,保证顺序
/** * 字符串去重 * * @param str 待去重字符串 * @return 去重后字符串 */ public String removeDuplicate(String str) { if (str == null) return str; int len = s...
2019-01-25 17:50:56
6190
5
原创 List去重的N种方式
/** * LinkedHashSet有个特性:不能添加重复数据并能保证添加顺序 * * @param list */ public static void removeListDuplicate1(List<String> list) { LinkedHashSet<String> set = new L...
2019-01-25 17:35:40
4233
原创 M3版本迭代小技巧总结
M3版本迭代小技巧总结:1.RecyclerView,ListView中获取position时谨慎使用holder.getAdapterPosition():1.1 目前测试发现:至少两种情况下,ArrayIndexOutOfBoundsException: length=10; index=-1,必现: 调用removeItem时; 同时点击两个Item时;1.2 官方文档解释...
2019-01-23 15:49:20
254
原创 定位权限的获取方式
/** * 与权限相关的工具类 * Created by @author iblade.Wang on 2019/1/8 19:22 */public class PermissionUtils { /** * 判断位置权限集合 */ public static String[] permissionsLocation = {Manifest.per...
2019-01-09 21:56:52
2358
原创 Android获取定位经纬度,转换成地址
private LocListener locListener = null; /** * 点击获取地图 * * @param view */ public void onClick(View view) { if (null == locListener) { locListener = new L...
2018-12-26 19:34:57
8344
原创 Android Studio 找不到符号 变量xxx 类id
module中布局文件移动文件之后,发现代码编译错误,报错信息如下:错误: 找不到符号符号: 变量 tv_content位置: 类 id但是,在Android Studio里面点击id的使用,仍然可以跳转到xml里面。原因是:代码是从一个module移动到另一个module,对R的引用还是引用的之前的module的,导致无法找到。解决方法是:把import里面对R的引用删除掉,让A...
2018-12-16 23:01:52
11033
11
原创 RecyclerView ViewHolder getAdapterPosition()返回-1(NO_POSITION)
RecyclerView 自带删除Item方法notifyItemRemoved(position);频繁点击删除时,突然抛出越界异常显示 position = -1 ;java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1at java.util.ArrayList.get(ArrayList.java:310)WTF...
2018-12-03 15:27:46
10328
2
原创 代码动态设置Margins
public static void setMargins(View v, int l, int t, int r, int b) { if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams p = (ViewGro...
2018-11-30 10:24:16
2343
原创 Git命令自动补全
下载git源码使用如下命令即可下载:git clone https://github.com/git/git复制 git-completion.bash源代码下有个 contrib/completion 目录,有个 git-completion.bash 文件cd git/contrib/completion/将该文件复制到主目录(~)下注意:复制时,文件名前加一个"点"(.),...
2018-11-08 19:53:45
8903
原创 Android Studio卡顿
AndroidStudio 卡顿 固态硬盘打开studio64.exe.vmoptions改成这样:-Xms4096m-Xmx4096m-XX:MaxPermSize=4096m-XX:ReservedCodeCacheSize=1024m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50-Dsun.io.useCanon...
2018-10-30 18:05:29
1247
原创 Android中Handler弱引用工具类
经常会用到Handler,我们也清楚它会内存泄露,如果再View中使用,很难做到onDestroy( )中removeAllCallback(null),索性写个工具类,但是我在项目中使用时候,发现有被GC的风险。/** * Created by ibalde.Wang on 2018/10/25 12:10 */public class HandlerUtils { priva...
2018-10-26 19:32:46
2350
3
原创 TextView跑马灯-两种实现方式
Android中TextView跑马灯有多种实现方式;一种是自定义控件,另外一种是写一个工具类自定义控件/** * Created by iblade.Wang on 2018/10/24 10:29 */public class MarqueeTextView extends TextView { public MarqueeTextView(Context context...
2018-10-26 19:27:51
3715
原创 Activity切换动画(开启/退出)的两种实现方式
Activity系统默认的进入动画是从右侧进入到左侧停止,退出动画是从左到右移动直到完全退出界面。如果要修改Activity进入和退出动画有两种方式。第一种方式:overridePendingTransition方法startActivity()方法之前调用overridePendingTransition方法。startActivity(intent);overridePendingTr...
2018-10-23 19:53:32
14502
3
原创 java.lang.ClassNotFoundException: Didn't find class "XXX.MainActivity" on path: DexPathList[...
2018-10-19 10:48:27
39384
11
原创 Git使用笔记
安装Git客户端的话,参考该文章https://www.cnblogs.com/vitah/p/3612473.htmlgit使用基本流程:1.从仓库克隆代码到本地找到公司GitLab项目地址ssh地址,拷贝本地任何一个文件夹 git clone ssh地址2.提交操作说明git add .添加所有文件git status查看状态git commit...
2018-10-12 11:27:45
242
原创 HashMap源码解析
来不及整理电子版,先献丑把笔记本拍几张,随后整理。有人问,什么年代了,还手写笔记,哈哈,如果不亲自手写一遍,我是真心记不住。很多API不用知道工作原理 一样可以使用,所以平时只是使用,如果要想进一步知道原理,岂能不下点功夫,例如 按照自身理解,动笔誊写一遍。...
2018-09-25 16:07:21
246
原创 Android面试题总结(2018年9月)
2018年9月,面试题总结,顺利拿到offer,并没有想象中的开心,或许随着工作年限的增长,对自己技术进步的步伐提出了更高的要求,加油!1.在Android开发中,谈一下您使用位运算的场景?(https://blog.csdn.net/zzp16/article/details/7956768)2.IntentService实现原理3. handler实现原理,能否用于子线程间通信,如何实现...
2018-09-25 15:35:00
445
原创 Kotlin初体验(五)-空安全
首先说 空 这件事,空 :One of the most common pitfalls in many programming languages, including Java is that of accessing a member of a nullreferences, resulting in null reference exceptions. In Java this wou...
2018-09-19 19:42:46
291
1
原创 Kotlin初体验(四)- 控制语句
条件分支条件分支是最简答的控制语句,主要包括两路分支和多路分支,我们一起探索下Kotlin给条件分支带来了哪些变化简单条件分支直接上代码: var i = 0 textView.text = &amp;amp;amp;amp;amp;amp;quot;开关&amp;amp;amp;amp;amp;amp;quot; //类似Java写法 btnClick.setOnClickListener {
2018-09-19 19:39:05
427
原创 Kotlin初体验(三)- 字符串 和 容器
字符串字符串与基本数据类型转换基本数据类型转String,在上一篇博客已经讲过,调用toString(),反过来,字符串又该如何转换成基本数据类型呢?请看下表字符串转换为其他数据类型的Kotlin与Java方式对比字符串转换目标Kotlin转换方式Java转换方式String-&amp;amp;amp;amp;amp;gt;InttoInt( )Integer.parseInt(字符串变量)Str...
2018-09-19 18:38:30
1494
原创 Kotlin初体验(二)- 基本数据类型
首先看一下Kotlin基本数据类型和Java区别: 基本数据类型名称 Kotlin的数据类型名称 Java的数据类型名称 整形 Int int和Integer 长整型 Long long和Long 浮点型 Float float和Float 双精度 Double double和Double 布尔型 B...
2018-09-12 15:14:45
521
原创 Android隐藏软键盘
网上好多方法说的隐藏方法,其实是隐藏/显示方法,即,当前键盘显示,调用一下,隐藏,在调用一下,又显示了。下面提供两种彻底隐藏的方法: /** * 软键盘显示/隐藏 */ public void hideShowKeyboard() { InputMethodManager imm = (InputMethodManager) getSyst...
2018-09-11 16:56:05
8745
3
原创 com.android.support冲突的解决办法
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes如果很多第三方包都有与support包冲突的话,可以在build文件添加以下代码,这样就不用一个一个依赖的exclude了://强制所有的第三...
2018-09-06 17:44:34
1499
原创 Kotlin初体验(一)-引入Android Studio
Kotlin问世于2011年,直到近两年被JetBrains,Google等公司扶持下,才被逐渐重视起来。尤其是2017年5月份谷歌宣布把Kotlin作为Android的官方开发语言,紧接着10月份Android Studio3.0正式集成了Kotlin开发环境,11月份更完善的Kotlin1.2版正式发布。尽管Java由来已久,根深叶茂,但作为Android开发人员,尽快了解Kotlin是大势所...
2018-09-06 15:52:59
4793
原创 AndroidStudio中调试java打印中文乱码
在AndroidStudio中调试Java程序,控制台输出时候中文出现乱码。就是下图酱紫。肯定是UTF-8出问题了,咋办?改吧,一看AS右下角,当前就是UTF-8啊!莫慌,去java module的build.gradle中加一段任务试试。tasks.withType(JavaCompile) { options.encoding = "UTF-8"}...
2018-09-05 16:28:45
4559
原创 JVM类加载三步走
Java虚拟机通过加载、连接和初始化一个类型,使该类型可以被正在运行的Java程序使用。加载:把二进制形式的Java类型读入Java虚拟机中。 连接:把加载的二进制形式的类型数据合并到虚拟机的运行时状态中去。 1. 验证:确保Java类型数据格式正确并且适合于Java虚拟机使用。 2. 准备:负责为该类型分配它所需内存。 3. 解析:把常量池中的符号引用转换为直接引用。(可推迟到运行中的程序...
2018-09-04 17:35:11
458
原创 Android属性动画优化
属性动画优化思路:①使用PropertyValuesHolder ②使用Keyframe ③animator.setRepeatCount(ValueAnimator.INFINITE)及时cancel()④动画卡顿,可以考虑使用自定义控件实现,如果一个自定义不行,那就是两个。。。(待续)一,PropertyValuesHolder ...
2018-08-31 18:29:35
2958
原创 SSDP在Android上的实现
一.什么是SSDP:SSDP(Simple Service Discovery Protocol),简单服务发现协议,用于发现局域网里面的设备和服务。 SSDP消息分为设备查询消息、设备通知消息两种,通常情况下,使用更多地是设备查询消息。设备查询消息-格式例子如下:M-SEARCH * HTTP/1.1HOST: 239.255.255.250:1900MAN: "ssdp:d...
2018-08-22 18:25:01
4732
6
原创 RecyclerView的插入,删除,替换
首先设置recyclerView动画mRecyclerView.setItemAnimator(new DefaultItemAnimator());然后在Adapter中定义三个方法 public void remove(int position) { list.remove(position); notifyItemRemoved(posit...
2018-08-18 17:26:10
2910
Scrollview中嵌套ViewPager和ListView常出现的问题
2016-03-30
Android:ScrollView中嵌套ViewPager和ListView示例
2016-03-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人