
android
文章平均质量分 68
MrCoderr
这个作者很懒,什么都没留下…
展开
-
Android:关于Window少为人知的一面
转自:https://www.jianshu.com/p/f9c3c9a19772?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation前言大部分情况下,我们和Window打交道的情况比较少,一般都是与Activity和View“交流”。最近做了不...转载 2019-07-08 19:21:20 · 956 阅读 · 0 评论 -
卡片式ViewPager,一屏展示多个pager item,设置高度不一致的tabBar
ViewPager的基本用法不必多说,这都很简单,我们可以在ViewPager中加载一个ImageView,也可以加载一个Fragment,这都是目前非常常见的用法。那么我今天说的是ViewPager中的PageTransformer属性,用好这个属性可以让我们的应用更加出彩,OK,那我们就开始吧!本文将从如下几方面来介绍: 1.clipChildren属性2.一个页面显示多个Vie...转载 2018-12-08 18:30:45 · 1830 阅读 · 0 评论 -
调用view.measure(0,0)时发生了什么
在 Activity 的 onCreate、onStart、OnResume 生命周期中,无法直接得到 View 的宽高信息。网上有以下几种常见的解决办法:在 Activity#onWindowFocusChanged 回调中获取宽高。 view.post(runnable),在 runnable 中获取宽高。 ViewTreeObserver 添加 OnGlobalLayoutList...转载 2018-10-12 17:54:31 · 1293 阅读 · 0 评论 -
maven库下载失败:Could not GET xxxx Received status code 500 from server: Internal Privoxy Error
由于某些jar包依赖下载不成功,所以在Android Studio settings中的http proxy中设置了代理,等下载成功后,在关闭代理,发现.gradle中的gradle.properties加入了代理配置,由于公司的maven库不能设置代理,所以在Android Studio中又关闭了代理,然后就报异常了 原来,只是在Andr...原创 2018-09-03 13:33:03 · 3966 阅读 · 0 评论 -
WMRouter:美团外卖Android开源路由框架
转自:https://tech.meituan.com/meituan_waimai_android_open_source_routing_framework.htmlWMRouter是一款Android路由框架,基于组件化的设计思路,功能灵活,使用也比较简单。WMRouter最初用于解决美团外卖C端App在业务演进过程中的实际问题,之后逐步推广到了美团其他App,因此我们决定将其开...转载 2018-08-24 15:29:08 · 3263 阅读 · 1 评论 -
解决android studio一直不停的indexing,一秒钟一次那种
File->Invalidate Caches/Restart原创 2018-08-20 11:19:34 · 3117 阅读 · 1 评论 -
通过反射解决在HuaWei手机出现Register too many Broadcast Receivers的crash
转载请注明出处:http://blog.youkuaiyun.com/llew2011/article/details/79054457 Android开发适配问题一直是一个让人头疼的话题,由于国内很多厂商都有对原生Android系统做不同的定制,结果导致适配起来很麻烦。印象最深的一个适配是让Notification的背景色做到和系统通知栏背景色一致,然后就是想各种办法做适配……近来在Bugly上...转载 2018-08-14 10:39:06 · 2009 阅读 · 0 评论 -
项目爬坑记之targetSdkVersion为23以下6.0中checkSelfPermission的问题
在6.0及以上的机子上运行targetSdkVersion<23的应用时,调用checkSelfPermission,不管用户是否授权,其返回值始终为PERMISSION_GRANTED,经查询资料, If your application is targeting an API level before 23 (Android M) then both:ContextCompat#c...转载 2018-07-26 14:22:22 · 1248 阅读 · 0 评论 -
AndroidVideoCache-视频边播放边缓存的代理策略
视频现状现在视频播放的需求越来越常见,就和16年上半年的直播一样,似乎不加个视频已经不是个正常的APP了,连微信朋友圈都支持上传小视频,更别谈以视频为本命的一系列APP。视频方面主要是两块,一个是视频录制,这个已经翻过一篇比较全的文章,再加上google开源的 grafika ,可以在踩坑时减少很多障碍,不过录制这块适配是大问题,需要不断调整。另一个方面就是视频播放,这方面的轮子比上面录制就多太多...转载 2018-07-04 11:09:35 · 8268 阅读 · 9 评论 -
项目爬坑记之使用ViewPager时调用adapter.notifyDateSetChanged() fragment不刷新问题
最近项目在使用ViewPager时调用adapter.notifyDatesetChanged() 碰到fragment不刷新问题,经查资料, 发现原创 2018-05-22 16:51:48 · 2204 阅读 · 0 评论 -
Android WebView 总结 —— 使用HTML5播放视频及全屏方案
在APP开发的过程中,会碰到需要在WebView中播放视频的需求,下面讲解一下如何在WebView中使用html5播放视频。1.让视频在各个Android版本能够正常播放在AndroidManifest.xml中声明HardwareAccelerate的标志,一般是添加在Activity的级别上。代码如下:<activity ... android:hardwareAccelerated="...转载 2018-04-11 17:48:17 · 1228 阅读 · 0 评论 -
Android 应用中跳转到应用市场评分示例
本篇文章主要介绍了Android 应用中跳转到应用市场评分示例,非常具有实用价值,需要的朋友可以参考下.在开发Android App过程中,经常会遇见这样的功能。从当前的app跳转到一个应用商店并且跳转到自己app的详情页面,让用户给自己的App进行评分、评价,从而提高自己App的排名。下面介绍三种方法实现该功能。方法一:通过系统隐式意图方式去调用应用市场app详情页try{ Uri uri ...转载 2018-03-21 17:43:22 · 4375 阅读 · 1 评论 -
Android中将其他app module转为library供app module使用
最近因为项目需要, 需要将另一个Android项目中的app module作为当前项目的library使用, 经过测试,以下方法可行.首先在当前项目中新建library module, 然后将需要导入的module中的jniLibs,libs,src,res,AndroidManifest.xml以及build.gradle中的文件及代码拷贝过去, 其中,build.gradle首行需要改为 ap...原创 2018-03-05 18:04:10 · 1529 阅读 · 0 评论 -
为什么ConstraintLayout代替其他布局?
ConstraintLayout, 即约束布局, 在2016年由Google I/O推出. 从支持力度而言, 将成为主流布局样式, 完全代替其他布局, 减少布局的层级, 优化渲染性能. 在新版Android Studio中, ConstraintLayout已替代RelativeLayout, 成为HelloWorld项目的默认布局. ConstraintLayout作为非绑定(Unbundled...转载 2018-02-27 10:11:21 · 775 阅读 · 0 评论 -
Error:Unable to find method 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;'.
今天构造项目引入最新的ButterKnife的时候碰到了一些问题,特记录下来。Android Library中需要引入ButterKnife,现在最新版本为8.8.1,按照官方教程需要在根目录的builde.gradle中添加插件和依赖库,在使用库中添加依赖和注解器,以及插件依赖。然后确报一下错误,github上面已经有了这个问题issue,JakeWharton大神也给了相关原创 2018-01-20 20:30:15 · 1110 阅读 · 0 评论 -
数据库ROOM-Google新推
转自 http://www.jianshu.com/p/bb8bd5bc8304前言 今年,谷歌新推了不少东西,在看其新架构Architecture Components(AC架构是一个类似MVVM的架构,7.0之前,Google公布过不少MVP架构的官方Demo,看来现在其也是与时俱进了)的相关文章时,注意到一个新的东西_ROOM数据库,这是一个SQLITE类型数据库,原创 2017-11-24 11:14:28 · 2091 阅读 · 0 评论 -
android系统各种音量的获取与设置
获取系统音量通过程序获取android系统手机的铃声和音量。同样,设置铃声和音量的方法也很简单!设置音量的方法也很简单,AudioManager提供了方法:publicvoidsetStreamVolume(intstreamType,intindex,intflags)其中streamType有内置的常量,去文档里面就可以看到。JAVA代码:AudioManage转载 2017-11-03 16:27:00 · 9311 阅读 · 1 评论 -
Android设置屏幕亮度的两种方式
最近项目需要设置Android设备的亮度,本来以为很简单的功能,结果搞了好久才搞定,Android在这里埋了一个坑。下面具体说下:Android系统的亮度值是0~255,数据类型为int型。设置屏幕亮度有两种方式,一种是通过WindowManager去设置当前界面的亮度——注意,是当前界面,不是系统的亮度。这种方式代码如下private void setLight(Activity co转载 2017-11-03 16:16:40 · 10190 阅读 · 2 评论 -
深入了解View的绘制流程
转自: http://www.cnblogs.com/absfree/p/5097239.html1. ViewRoot ViewRoot是连接WindowManager与DecorView的纽带,View的整个绘制流程的三大步(measure、layout、draw)都是通过ViewRoot完成的。当Activity对象被创建完毕后,会将DecorView添加到Windo原创 2017-11-01 15:54:28 · 289 阅读 · 0 评论 -
Android.mk 文件语法详解
转:http://blog.sina.com.cn/s/blog_602f8770010148ce.html=====================================================================================0. Android.mk简介:Android.mk文件用来告知NDK Build 系统关于Sou原创 2017-10-25 19:32:04 · 448 阅读 · 0 评论 -
终于搞懂令人迷惑的 StatusBar 了
转自 http://www.jianshu.com/p/c8221fb6b4fc随着Android版本的迭代,开发者对状态栏等控件有了更多的控制, google 一直在尝试引入新的Api来满足开发者的需求,但Api却一直不够完美,接口添加了很多,却都不够简单或者说完美,算上第三方厂商的特色行为,怎一个“乱”字了得。1、效果当前主流(2017)Android app StatusBar转载 2017-10-20 14:08:40 · 26624 阅读 · 0 评论 -
android仿今日头条下拉刷新中的vector动画
一直有留意到今日头条下拉刷新的效果, 真的很赞,在学习了svg drawable相关资料后, 参考博客http://blog.youkuaiyun.com/u012950099/article/details/52040028完成了今日头条下拉刷新中的动画, 首先看下效果图:录制效果有点渣,少了上边和下边两条线, 请大家见谅.....ps: gif中还有仿ios菊花loading效果, 仿qq下拉原创 2017-07-24 19:03:56 · 5941 阅读 · 8 评论 -
android仿ios菊花LoadingView
最近抽空仿着ios上的菊花加载效果,自己实现了个,效果感觉还行,于是写篇博客贴出来,供大家参考自定义view无非就是那几步,首先分析要实现的效果,采用那些方式实现比较好,然后是否需要自定义属性, 测量布局是否需要重写这样, 最重要还是onDraw中画出来.废话少讲,直接上代码:ChrysanthemumLoadingView.java private int mWidth;原创 2017-07-12 14:12:37 · 1644 阅读 · 0 评论 -
android自定义View-欢迎页倒计时ProgressBar(配合RxJava2)
平常是使用其他app的时候发现欢迎页右上角或者其他部位会有一个倒计时的ProgressBar, 最近有空就自己实现了下。大体上分为三个步骤, 首先是自定义属性,然后onDraw中绘制view,最后在使用的时候配合RxJava2实现progress刷新。贴上代码实现:1 attrs文件中:原创 2017-07-04 23:04:12 · 998 阅读 · 0 评论 -
The APK file xxx.apk does not exist on disk. Error while Installing APK
今天编译装包到测试机莫名其妙的报了这个问题, 发现这个文件确实在该文件夹下是存在的, 不知道是不是as的bug好吧百度下吧, http://m.blog.youkuaiyun.com/qq446282412/article/details/51243441http://blog.youkuaiyun.com/afunx/article/details/70313402这两篇文章介绍的方法都试过了,但是没有原创 2017-06-26 14:44:13 · 2855 阅读 · 0 评论 -
我自己的android studio代码混淆打包参考
自己项目中常用的代码混淆方式,仅供参考-keepclassmembers class fqcn.of.javascript.interface.for.webview { public *;}#指定代码的压缩级别-optimizationpasses 5#包明不混合大小写-dontusemixedcaseclassnames#不去忽略非公共的库类-dontsk原创 2017-06-26 11:59:39 · 1790 阅读 · 0 评论 -
Android 混淆提示 java.io.FileNotFoundException: ...\proguard-rules\release\aapt_rules.txt (系统找不到指定的路径)
这个问题花了一些时间,在这里记录下来,首先先来说说Android的混淆。混淆配置文件由三部分组成:(此段转载自:http://blog.youkuaiyun.com/thm521888/article/details/53905928)1.默认配置 getDefaultProguardFile('proguard-android.txt') 或者 getDefaultPr原创 2017-06-26 11:32:56 · 5044 阅读 · 2 评论 -
Android CollapsingToolbarLayout使用介绍
我非常喜欢Material Design里折叠工具栏的效果,bilibili Android客户端视频详情页就是采用的这种设计。这篇文章的第二部分我们就通过简单的模仿bilibili视频详情页的实现来了解下CollapsingToolbarLayout的使用。文章的第三部分介绍了CollapsingToolbarLayout与TabLayout的组合使用。有基础的朋友可以直接跳过第一部分。转载 2017-05-26 17:59:16 · 997 阅读 · 0 评论 -
RxJava2对比RxJava
英文链接:What’s different in 2.0RxJava2相比RxJava1,它的改动还是很大的:Observable and Flowable在前一个版本里backpressure被集成到了Observable中,官方也提供了很多方法让我们来处理backpressure问题。但是有一些特殊的场景根本无法用其来解决,最常见的例如UI事件。而不处理backpres转载 2017-05-26 16:11:18 · 855 阅读 · 0 评论 -
Kotlin学习笔记第一天
经常看到 val 和 var, 其区别是变量可以简单的定义为可变(var)和不可变(val)的两种类型的变量, 这个与java中的final相似. 不可变在kotlin(和其他很多现代语言)中是很重要的概念./************************************** 未完待续 *******************************************原创 2017-05-22 14:01:47 · 311 阅读 · 0 评论 -
Android Glide You cannot start a load for a destroyed activity 的异常及解决方法
Glide 很强大,不再多说。今天发现了 You cannot start a load for a destroyed activity 这个异常,时因为相关 Activity/Fragment 已经 destroy,而程序代码中依然在使用 Glide 加载图片导致的。抛出异常的方法是在 RequestManagerRetriever.Java 类里面:@TargetApi(Build.转载 2017-05-19 18:03:48 · 3562 阅读 · 0 评论 -
WebView加载网页基本配置
/* 设置支持Js,必须设置的,不然网页基本上不能看 */ mWebView.getSettings().setJavaScriptEnabled(true); /* 设置缓存模式,我这里使用的默认,不做多讲解 */ mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); /* 设置为true表示支持使用js打原创 2017-04-27 15:14:41 · 1319 阅读 · 0 评论 -
最新配置dagger2,亲身经历,教你少走弯路!
不少同志看到网上配置dagger2的教程,结果可能一直报错,如下所示: Error:Could not get unknown property 'classpath' for task ':app:transformJackWithJackForDebug' of type com.Android.build......这个时候我们需要检查自己是否是按照网上说的那样添加apt插件什么的,原创 2017-04-20 00:14:27 · 5140 阅读 · 3 评论 -
android vector pathData探究,几分钟绘制自己的vectordrawable
之前经常看到一些酷酷的图标效果, 深入进去发现不是直接用的图片, 而是一些以Vector标签开头的xml文件, 于是就看到了如下代码:<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:v原创 2017-04-07 18:29:36 · 9457 阅读 · 2 评论 -
属性动画系列之ViewPropertyAnimator
写在开始转载请注明:http://www.qinglinyi.com/posts/ViewPropertyAnimator/属性动画动画系列从开始到现在,其他类例如ValueAnimator、ObjectAnimator还有AnimatorSet等的介绍挺多的,但是关于ViewPropertyAnimator这个类的介绍似乎比较少,所以本文详细的介绍一下这个类(主要是这个类的内部实转载 2017-04-06 18:37:22 · 1055 阅读 · 0 评论 -
Android 7.0 安装失败的两个原因 Failed to collect certificates from /data/app/vmd......
提示安装失败,安装包不完整原因这是因为Android7.0作用域目录访问 在 Android 7.0 中,应用可以使用新的 API 请求访问特定的外部存储目录,包括可移动媒体上的目录,如 SD 卡。新 API 大大简化了应用访问标准外部存储目录的方式,如 Pictures 目录。应用(如照片应用)可以使用这些 API(而不是使用 READ_EXTERNAL_STOR转载 2017-04-06 12:09:59 · 16707 阅读 · 1 评论 -
记一次因fragment生命周期产生的bug及优化
由于项目的需要, 在MainActivity中利用ViewPager和FragmentPagerAdapter实现主界面的4个fragment切换, ViewPager 设置setOffscreenPageLimit为4, fragment生命周期交给PagerAdapter管理, 其中第二个fragment中又嵌套了4个子fragment, 具体模型看下图:一般情况我们都是习惯封装一原创 2017-04-06 11:48:13 · 846 阅读 · 0 评论 -
利用SurfaceView实现墨迹天气雪花效果
先看看效果图吧(小雪花的图片不是特别好,见谅)!分析: 雪花太多, 用动画实现比较复杂, 可以借助SurfaceView控件, 为啥用SurfaceView呢, 它和View的区别: SurfeceView是在一个新启的单独的线程中绘制界面(双缓冲),不会阻碍UI线程, 而View必须在主线程即UI线程中更新界面,可能会导致UI线程的阻塞.SurfaceView在处理touch事件原创 2017-03-31 16:01:22 · 1809 阅读 · 0 评论 -
Android 6.0 运行时权限处理完全解析
ACCESS_LOCATION_EXTRA_COMMANDSACCESS_NETWORK_STATEACCESS_NOTIFICATION_POLICYACCESS_WIFI_STATEBLUETOOTHBLUETOOTH_ADMINBROADCAST_STICKYCHANGE_NETWORK_STATECHANGE_WIFI_MULTICAST_STATECHANGE_WIFI_STATEDIS转载 2017-03-21 19:04:20 · 1197 阅读 · 0 评论 -
android LayoutInflater.inflate()的参数介绍
转自:http://www.cnblogs.com/wenfei123chai/p/4597404.htmlLayoutInflater.inflate()的作用就是将一个xml定义的布局文件实例化为view控件对象; 与findViewById区别: LayoutInflater.inflate是加载一个布局文件; findViewById则是从布局文件中转载 2017-02-23 14:52:32 · 500 阅读 · 0 评论