![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
hzqaqz
这个作者很懒,什么都没留下…
展开
-
二维码保存到相册以及识别相册中的二维码-zxing
二维码Zxing相关生成二维码并保存至相册1.保存二维码到相册需要系统“WRITE_EXTERNAL_STORAGE”权限。使用前需先动态申请权限。检测权限接口如下: /** * Determine whether <em>you</em> have been granted a particular permission. * * @...原创 2019-06-14 17:44:35 · 4985 阅读 · 2 评论 -
DecorView和Window的理解
DecorView Window原创 2022-07-11 15:39:34 · 513 阅读 · 1 评论 -
cardview,button遮盖了别的控件。
FrameLayout、RelativeLayout。直觉上,在控件位置重叠时,xml处于底部的控件会出现在上层。但是CardView,Button这类的控件即便处于xml顶部,仍然会覆盖xml底部的控件。期望:实际:原因:CardView这类的控件默认会设置z轴高度来展示阴影。解决:...原创 2022-07-06 14:44:29 · 447 阅读 · 0 评论 -
安卓8.0,设置activity背景透明且设置方向,引发Only fullscreen opaque activities can request orientation问题。
安卓8.0同时设置activity为为透明且设置方向将引发引发Only fullscreen opaque activities can request orientation问题。原创 2022-06-20 11:21:41 · 331 阅读 · 0 评论 -
DecimalFormat 多语言、本地化指定Locale
DecimalFormat 多语言、本地化指定Locale原创 2022-06-08 11:49:20 · 427 阅读 · 0 评论 -
EditText相关
android editText相关笔记原创 2022-05-16 18:51:03 · 73 阅读 · 0 评论 -
viewpager懒加载
实现懒加载的方法构造pagerAdapter时设置mBehavior。 FragmentPagerAdapter fragmentPagerAdapter = new FragmentPagerAdapter( getSupportFragmentManager(), FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT )在fragment的onResume中加载数据。设置BEHAVI原创 2021-04-08 11:23:19 · 730 阅读 · 0 评论 -
android studio debug无法获取local变量
gradle文件buildTypes { debug { minifyEnabled false testCoverageEnabled false } }原创 2021-01-14 15:22:24 · 539 阅读 · 0 评论 -
Retrofit + RxJava
使用Retrofit封装网络请求,使用Rxjava处理发起请求以及接下来处理结果的流程。定义网络请求接口public interface RetrofitService { @GET("query") Call<PostInfo> getPostInfo(@Query("type") String type, @Query("postid") String postid);}初始化RetrofitRetrofit retrofit = new Retrofit.Bui原创 2020-12-24 18:50:18 · 205 阅读 · 4 评论 -
rxjava使用小结
定义rxjava是一个基于事件流、实现异步操作的库。作用实现异步操作,类似与asyncTask,handle。意义当需要在后台进行操作,操作完再回调主线程进行ui展示时,若使用经典的异步实现,则会存在多重嵌套的情况,难以读懂。 @Override public void run() { super.run(); for (File folder : folders) { File[] files = folder.listFi原创 2020-12-24 16:00:02 · 91 阅读 · 0 评论 -
EventBus的使用
EventBus是一款轻量级事件发布/订阅轻量级框架,可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法。注册和取消注册在activity的生命周期中,进行注册的取消注册的操作。如在onCreate中注册,在onDestroy中取消注册。//注册EventBus.getDefault().register(MainActivity.this);//取消注册EventBus .ge原创 2020-12-24 14:56:25 · 154 阅读 · 0 评论 -
git在android studio中的使用
将git项目clone到本地分支管理新建分支:切换分支原创 2020-12-24 11:32:30 · 120 阅读 · 0 评论 -
android判断手机是否为24小时制
android.text.format.DateFormat.is24HourFormat(getContext())原创 2020-05-28 11:20:19 · 595 阅读 · 0 评论 -
系统回收app资源后发生空指针异常的三两事
最近公司的项目经常发生一个奇怪的bug,fragment中的一个成员变量device经常发生空指针异常,但是这个device是从单例中拿到的对象,理论上不论发生何种情况从单例中拿到的对象都不应该为空。在正常的流程里找了很久这个bug发生的原因未果,后来想是不是app被系统回收资源之后发生的异常,经过一系列的debug发现,单例中的拿到的对象依旧不为空,只是成员变量device为空。解决:深究发...原创 2020-04-20 14:24:10 · 469 阅读 · 0 评论 -
嵌套滑动的LinearLayout(滑动隐藏头部的LinearLayout),滑动时先隐藏头部(第一个子控件)再滑动recyclerview
需求:LinearLayout内部包含一个头部和一个recyclerview。recyclerview可滚动,滚动时如果头部仍在可见则先滚动LinearLayout直到头部消失,再开始滚动recyclerview。思路:自定义LinearLayout实现NestedScrollingParent,getChildAt(0)获取头部,...原创 2020-04-07 14:59:14 · 537 阅读 · 0 评论 -
高度动态适应的viewpager,高度随子view高度变化
概要需求:viewpager左右滑动后需加载信息(转圈loading),loading时viewpager的高度要求与之前的页面高度相同。在loading结束后根据页面内容重新自适应viewpager的高度。前言:在网上找了些viewpager自适应的实现方案,清一色都是在onMeasure中测量所有子view的高度并将最高的高度作为viewpager的高度。此方案的缺点在于从较高的view切...原创 2020-04-02 10:57:41 · 1294 阅读 · 0 评论 -
android多线程知识点整理
线程在Android中是个很重要的概念,从用途来说,线程分为主线程与子线程,主线程用于处理界面相关事情,子线程用于执行耗时操作。除了Thread本身外,AysncTask,IntentService及HandleThread在安卓了都扮演着线程的角色。AysncTask:底层封装了线程池和Handler,方便开发者在子线程中更新ui。Handler:具有消息循环的线程,内部可以使用Handle...原创 2020-03-03 15:40:38 · 341 阅读 · 0 评论 -
camera预览画面,进入子页面,连续锁屏再进入app,返回相机预览页面黑屏。
解决方法:Activity onPause方法,将surfaceview设置成visible,onResume方法设置为gone。网上的分析:原文锁屏下相机资源的释放问题为了节省手机电量,不浪费相机资源,在开发的自定义相机里,如果预览图像已不需要显示,如按Home键盘切换后台或者锁屏后,此时就应该关闭预览并把相机资源释放掉。参考官方API文档,当surfaceView变成可见时,会创...转载 2020-01-02 16:19:38 · 1160 阅读 · 1 评论 -
Glide源码分析笔记
with()函数with函数有多中重载,其参数可能为Context参数,Activity参数,Fragment参数等。glide的加载生命周期会与此参数相关,当该参数销毁时,glide不在继续加载图片。1.当参数为Application时,加载周期与程序生命周期相同不做特殊处理。2.当参数为activity、fragment时,glide会向activity中新增一个空的fragment以监...原创 2019-12-28 15:20:41 · 88 阅读 · 1 评论 -
多张bitmap转gif,并使用DiskLruCache在本地缓存
多张Bitpmap转gif使用AnimatedGifEncoder将bitmap生成gif并存在ByteArrayOutputStream 中。AnimatedGifEncoder是在glide中的一个类,但是后来glide已将该类删除。此文最后附AnimatedGifEncoder代码。 public static void getGifBytesFormYuvList(String f...原创 2019-12-26 18:18:13 · 676 阅读 · 0 评论 -
Synchronized用法
synchronized分对象锁和类锁,对象锁主要为了保证普通变量的线程安全,相反类锁是为了保证静态变态的线程安全。synchronized修饰实例方法(对象锁) public synchronized void run() { for (int i = 0; i < 5; i++) { } }synchronized修饰静态方法(类锁...原创 2019-12-23 15:13:55 · 109 阅读 · 0 评论 -
内存泄漏
内存泄漏长生命周期的对象持有短生命周期的对象,会导致短生命周期的对象无法被回收,形成内存泄漏。强引用:系统宁愿抛出异常也不轻易回收强引用对象。弱引用:在内存即将溢出前将弱引用进行回收吗,若回收后仍会发生内存溢出则抛出异常。弱引用:在发生回收事件时,即刻回收弱引用对象。单例造成内存泄漏单例对象会使用static修饰,生命周期即为全局声明生命周期。若其持有较短生命周期的对象则会造成内存泄漏...原创 2019-11-19 16:09:31 · 86 阅读 · 0 评论