自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

翻译 解决升级mac big sur 后android studio debug、新建文件夹会以大窗口打开(非常卡顿)

在mac 10.+版本的系统,使用Android Studio 还是很友好的最近手残,升级mac系统 到big sur (11)后,感觉使用Android Studio 真的很费劲呀,debug调试根本不能用,新建文件夹也不行,深度怀疑是不是苹果要和谷歌打架了经过多方查找总算在外国网站找到了解决方法在终端中输入下面内容(先关闭Android Studio) 就搞定了defaults write com.google.android.studio AppleWindowTabbingMode

2021-02-22 18:41:48 473 2

原创 通过自定义EditText 完成 @人 #话题# 等标签

近期整理了@人和#话题#等一些标签在输入框中实现的代码主要思路是 继承 AppCompatEditText 利用SpannableString 和 一个指定的数据类型的Bean实现后的效果如下Android EditText利用SpannableString实现删除块下面我们分析下具体的思路1.我们首先继承AppCompatEditText2.在我们需要插入@人的时候 其实是往EditText里面插入了一个数据块,名称(libleName) /Id(libleId...

2020-12-17 18:37:17 900 2

原创 android三级列表拖动

最近项目需求要求对一个三层级的树状列表做拖动,经过一周时间的开发终于是搞出来了。做出来的效果一、首先讲一下树状列表是如何实现的1.整个树状列表使用的是RecyclerView2.层级间的UI是用Item中左侧一个透明的View宽度大小来实现层级效果3.和后端要求,让其返回我们协商一致的数据结构二、拖动的实现用的是ItemTouchHelper.Callback1.定义一个接口,里面有四个需要实现的方法1.1 拖动开始,获取初始拖动的position onItemStar...

2020-11-18 16:28:59 384 1

原创 ReactNative ScrollView 滚动到顶部或指定位置

最近项目使用ReactNative来写一个模块,有一个功能是,输入完成后,刷新页面并滚动的顶部页面比较长,我嵌套了一层ScrollView,刷新数据后并不能滚动到顶部,后来找官方文档,以下是解决方案1.全局声明一个ScrollView_scrollView: ScrollView | null | undefined;2.在ScrollView中赋值<ScrollView ref={component => this._scrollView = component}>&

2020-08-17 14:31:38 2834

原创 android 模块通信和Scheme的配套使用

今天聊聊android的跨模块通信 对之前写的跨模块通信做简化https://blog.csdn.net/lixiaoshuai_91/article/details/86526848在之前的博客里面我聊到了模块间通信的一种机制,利用interface事件回调进行模块间通信由于其实现起来代码量比较多,今天在这里做一个简化首先我们讲述下需要的准备工作,1.需要跳转的Activity注册Scheme协议<activity android:name="com.ansier.mo.

2020-07-25 18:02:26 378

原创 解决ButterKnife和androidX的冲突

最近在帮助朋友新建一个新项目,在引入ButterKnife 8.8.1 的时候总是报错和androidX有冲突,查了很多资料后都是一些适配androidX,但是还是没有解决问题。看了ButterKnife在Github上给出的代码后问题就解决了,这里还是想吐槽下自己,ButterKnife现在已经到10.2.1了我们还在使用8.8.1????‍♀️ 还是要及时更新项目中引用库的版本呀ButterKnife Github地址https://github.com/JakeWharton/butterkn

2020-07-16 11:23:31 1810

原创 解决WebView底部空白,真实有效

项目中有牵涉新闻的部分,新闻里面用的是WebView和RecyclerView因为回引入很多三方的web地址,部分WebView出现底部白屏,也有二级页白屏的问题(这个是因为自身原因,重定向后没有重新设置高度)找了相关资料,总算是给解决了以下是解决白屏的代码首先在JavascriptInterface 里面注册一个 重新设置WebView的方法public class BaseF...

2020-04-14 18:07:41 2622

原创 android 图片大小 视频时长,视频第一贞图片

文件内容处理

2020-03-30 18:11:15 343

原创 Android跳转到应用详情-权限管理

今天整理代码,将权限的一下操作整理了一下。App如果没有申请到某些权限,指引用户跳转到应用详情页,让用户手动打开权限Intent localIntent = new Intent();localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);localIntent.setAction("android.settings.APPLICATI...

2019-07-24 14:12:11 1400

原创 App和微信小程序的通信

   随着微信小程序的迅速发展,现在很多的工具都做成小程序了,比如查快递,扫发票等;这些功能做到app或者SDK里面也是可以的,但是相对来说会增加Apk的大小;如果我们需要某些工具类的功能接入微信的小程序,也是很方便的。在接入小程序前我们肯定要阅读腾讯给我们提供的API:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_lis...

2019-01-29 17:39:14 1795

原创 Android 组件化开发 各个Mode之间和App的通信

App开发组件化开发,各个Mode间的通信可能第一次接触的人不太了解;其实有很多种方式的,比较流行的是阿里路由,如果在已有的项目上实现组件化,用阿里路由可能有些麻烦,尤其是App层依赖的资源比较多,暂时那些依赖的资源还没有挪出来,那Mode调用App层的资源就很难受了。其实Mode层调用App层的资源或者A-Mode调用B-Mode我们用接口回调的方式也可以实现的,原因是App层都会依赖各Mo...

2019-01-17 16:58:30 1900

原创 Glide获取网络图片和本地图片的宽高

今天分享下Glide加载图片的番外篇,获取图片的宽高;如果是本地图片的话,我们可以用BitmapFactory获取到图片的宽高,下面上代码public static int getImageWidth(String pathUrl) { BitmapFactory.Options options = new BitmapFactory.Options(); options...

2018-11-26 15:35:54 4166 5

原创 java.lang.NoSuchFieldError: No field mIv of type I in class R$id'

今天碰到这个bug坑害了我一天,主要原因是新引入了一个带缩放定位动画的一个库PthotoViewer,这个库使用Kotlin写的;刚开始报这个错误以为是以为项目不支持Kotlin呢,后来看了一下源码,发现这个库里面的item_picture文件和我们之前写的图片预览文件命一样,果断更改了文件名,问题总算解决了;这里记录下这个错误的内容,省的下次再犯!...

2018-11-13 17:31:01 1536

原创 Glide 无法加载图片,加载图片失效

昨天中午遇到一个很奇葩的bug,glide就是不加载图片,而且不显示占位图片和错误图片,各种调试后还是无果;我先描述下无法加载图片的场景; 我们的IM聊天页面给我们抛出了一个Adapter的实现接口,实现这个接口后可以在未实现的方法里面定义各种布局卡片(其实实现后就和Adapter类似);由于这些布局卡片,由于这些卡片上的数据是动态的,每次在聊天页面加载卡片的时候就会获取网络请求,然后设置...

2018-10-31 09:06:00 15280 2

原创 android studio 利用productFlavors 生成三种不同网络环境的Apk

为了方便开发,都会有不同的网络环境android 开发中我们在项目上线前都需要结果大量的测试,为了方便不同环境的测试,我们需要打不同网络环境的apk今天给大家分享下一个项目打三种apk,这三种apk可以在手机上并行安装,不会出现覆盖主要利用build.gradle 的productFlavors下面直接上代码 这些代码都是在build.gradle文件里android目录下的...

2018-10-09 15:16:53 1830

原创 腾讯IM中表情和文本不对齐的问题

今天给大家分析下,腾讯IM提供的Demo中表情和文本信息不管是在TextView还是EditText中不能对齐的问题首先可以肯定腾讯IM中使用的是把assets下的一个文件夹中的图片循环遍历成一个BitMap;然后转换成一个ImageSpan,最后放到SpannableStringBuilder里面;其实对齐方式的主要关键点在转换ImageSpan的步骤里;如果从写ImageeSpan...

2018-10-07 16:29:29 643

原创 RecyclerView实现单选的三种方式

今天给大家分享下RecyclerView实现单选的三种方式,这三种方式都需要一个标识位,mPosition单选的话建议大家不要使用checkBox(android不同版本checkBox显示的不一样哦),使用一个ImageView代替是最理想的在Adapter里面首先初始化我们的标识位 int mPosition=-1;第一种方式就是刷新列表,使用notifyDataSetChanged();下面...

2018-04-27 11:14:26 7611 14

原创 去掉button自带阴影

昨天帮同事修改bug,UI提议一个很奇特的bug,说确认按钮有阴影,本来我们是设置了背景的,并且背景用的是shapeshape中加了边框线,可现实在手机上button底部会有两条边框线,ui就说我们加了阴影。。。后来找了下万能的CSDN,就在Button的Layout文件里加了style="?android:attr/borderlessButtonStyle"问题就搞定了,这里做下笔记,希望也...

2018-04-24 18:33:10 3406

原创 android Luban 图片压缩

图片压缩Luban的具体使用

2017-11-08 15:35:01 1079 2

原创 android Matisse图片选择器的引入

hi,由于最近琐事太多,很久没有更新博客了,今天抽空给大家分享一个图片下载器Matisse,出自知乎,绝对的精品;之前也使用过三方的图片选择器,但是Matisse的图片界面效果简直是美翻天,并且Matisse中引入了Glide和Picasso,这两个库可以自行选择;

2017-11-07 11:57:24 1596

原创 最新ViewPagerIndicator的使用

ViewPagerIndicator的最新实现方法,超级简单,看了绝对对你有帮助。

2017-01-06 09:54:20 5562

原创 android Https请求的使用

android https的使用,无需设置,直接请求,简单粗暴。

2016-12-22 11:29:39 604

原创 热修复,Tinker的接入

热修复是以后App必不可少的一个功能,不仅能及时修复一些Bug,还能够更灵活的实现版本迭代

2016-12-06 10:48:30 501

原创 android6.0获取手机IMEI被拒,乐视手机闪退

关于android6.0之后获取Imei闪退问题

2016-11-23 19:49:47 3098

原创 获取App的权限列表,及判断添加的权限有没有生效

判断所添加的权限有没有生效

2016-10-26 16:37:15 4206

原创 双击退出App 重写onBackPressed()

这是双击退出App的原理及代码实现

2016-10-19 15:31:50 1292

原创 在WebView和Activity中关闭到指定的页面

关闭Activity到指定的Activity页面

2016-10-11 14:56:41 2881

原创 webView加载H5页面出现空白页的解决办法

最近在做一个理财的项目,其中用到的H5页面比较多,在项目后期出现了很多bug,今天介绍下webView加载H5出现空白的解决办法首先介绍下出现问题的场景,我们在一个Activity中镶嵌了一个H5的小页面,在这个Activity中有很多点击可以进入另外的H5页。并且这个Activity每次执行onResume就会重新加载所有的数据。  当H5页面没有加载完成的时候如果我点击进入另外的H5页面时

2016-09-29 20:08:11 20835

原创 android设置系统文字大小后App的文字会变化

对于程序员来说,我们很少会去设置手机的字体大小,因此也不会出现设置字体后App界面变化。但是近期由于我们开发的项目中嵌套的H5页面太多,很多手机适配都没有问题,唯独有一款红米Note2在加载H5页面后变的面目全非,后来又采购了一台红米note2适配是没有问题的。经过排查原因是,最初的红米note2字体设置为大号字体。因此导致了原来的字体(sp)都会放大1.2倍,使界面不是预期的了。经过一番

2016-09-28 09:44:56 1610

原创 android最新版 极光推送

最新版的极光推送,超级方便,只使用AndroidStduas

2016-09-27 16:47:50 602

原创 Double float 保留小数点后几位最好用的两个方法 ,四舍五入,国际标准

今天在这里整理了,Double 和float 保留几位小数的最好用的两个方法(四舍五入,国际标准)直接上代码吧1.double dou = 231.12678 ;String str = String.format(" %.2f  ",dou); //这里2的取值为0~n  代表要保留的小数位数,0表示不保留2.double dou = 231.12678 ;BigDe

2016-09-16 15:04:15 12758

原创 ProgressBar 自定义颜色、在代码中设置颜色

ProgressBar 我们一般都是自定义的背景颜色,和进度条颜色,但是在代码中我们想要更换背景颜色和进度颜色就没有那么简单了,下面我就分别介绍下,自定义颜色(这个正常的android程序员都会)和在代码中更换背景颜色和进度颜色1.自定义背景颜色和进度条颜色在drawable里面新建一个xml文件选择layer-listhttp://schemas.android.com/ap

2016-09-15 17:10:00 8817

原创 Fragment在ViewPager中布局文件丢失

现在主流的界面都是一个Activity中镶嵌三到四个Fragment,然后在这些Fragment中再镶嵌ViewPager,为了代码条理清晰,我们在ViewPager中存放的是Fragment而不是View。正常情况我们在ViewPager中嵌套View是没有问题的,但是再次嵌套Fragment就会出现布局文件丢失,只在第一次创建的时候可以看到,等切换了页面就变成空的了。这是因为我们拿到的Fr

2016-08-19 17:41:07 593 2

原创 ListView分页加载

在很多App应用里面我们可以看到好多ListView都用到了下拉上拉刷新功能,可能大家都会想到第三方框架PullToRefresh,今天我就在这里给大家说说刷新的原理,使用原生态的ListView实现刷新功能为了我们更好的使用,这里可以自定义一个ListView(MyListView),实现他的监听方法 代码如下:public class MyListView extends ListView

2016-08-11 21:37:45 390

原创 Bitmap(图片)保存至本地和使用

今天通过一个晚上的时间,做了一个图片三级缓存的框架,下面我把‘Bitmap怎么保存至本地和怎么拿取使用的主要代码给大家简单的介绍下保存: File 路径 = new File( 文件目录,name);//这里是用逗号隔开的,切记!FileOutputStream fos = new new FileOutputStream(路径);Bitmap.compress(Bitmap.Co

2016-07-24 21:32:25 758

原创 HashSet、TreeSet 去除Class重复的元素

Set下的HashSet和TreeSetSet集合是无序不可重复的,但在Set里面添加Class时,Class里面的元素是可以重复的,下面就介绍下怎么去除重复元素的方法。1.HashSet 在添加Class时,要在这个Class中实现hashCode()和equals(Object ob)方法通过hashCode()方法可以实现HashSet的排序:@Overridepubli

2016-07-19 11:45:20 547

翻译 LinkedList 基本属性

LinkedList和ArrayList是同级别的集合,都是List的fenzhi。LinkedList是一个链条集合,其添加和删除、定位比较方便,不仅拥有ArrayList的部分属性,还有自己都有的属性。相对ArrayList,LinkedList的功能更强大。其主要功能是直接可以获取头部和尾部的元素linkedList = new java.util.LinkedList();link

2016-07-16 15:12:58 714

原创 ArrayList 集合遍历 删除 筛选重复数据

ArrayList遍历删除筛选在做数据处理中ArrayList我们用的是最多的,今天总结一下ArrayList在使用中的一些常用功能: 遍历ArrayList的数据、 删除ArrayList的数据、筛选掉ArrayList的重复数据。ArrayList遍历,通常有三种方式 普通for循环、增强for循环、迭代器进行迭代。 代码如下:一.遍历集合ArrayList arrayL

2016-07-16 10:09:54 5230

原创 android Java 冒泡排序 最大值 最小值

今天在这里给大家介绍2重冒泡排序的算法,以及代码1.用两个for循环, for1是做排序的次数循环,for2是把最小或最大值前移,for2循环第一次就能得到最小值或最大值 代码如下:这种方式也适合做最大值,最小值的运算,只需要循环一次就好因为这个方法是拿一个位置的数据和全部List数据做比较1:2 ,1:3 ,1:4for (int i = 0; i

2016-07-08 10:52:04 2017

原创 关于inflate导入Layout失真(导入的布局,不是自己想要的)

想必大家在做RecyclerView、Fragment、ViewPager等一系列需要导入Layout文件的组件时,都会遇到导入的Layout显示出来的效果和预期的不一样;比如RecyclerView,在上下拉动时背景颜色会变,宽度不是我们所设定的。这是应为我们的 inflate的参数有一个给的是null,但是如果不给null,就会报错; View.inflate(this, R.layout

2016-06-23 20:46:40 292

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除