
安卓
文章平均质量分 72
android
CodingForAndroid
这个作者很懒,什么都没留下…
展开
-
浏览器加载HTML页面唤起手机中的App最全攻略
Android通过Scheme协议打开APP界面web页通过浏览器打开js scheme 打开手机app的方法Android 中 配置scheme,APP 中获取 Scheme中的参数值如果你也热衷技术欢迎加群一起进步:230274309 。 一起分享,一起进步!少划水,多晒干货!!欢迎大家!!!(进群潜水者勿加)原创 2021-03-04 23:32:54 · 2350 阅读 · 1 评论 -
Android可以响应局部、部分点击事件的View、ImageView
有些场景,需要一张图片部分可点击,这样就需要自己提前确定可响应点击范围。这里以ImageView 为例,讲一下部分可点击事件。看下效果:我这里一张顶部图片,有个输入框元素,如果元素要一个个叠加的话,会比麻烦,直接用一张图片做背景就比较省事,只要处理下 只响应输入框这一部分的点击效果。首先布局文件中: <com.xxx.widget.PartClickImageView android:clickable="true" android:id="@+id/原创 2021-02-21 20:21:12 · 1574 阅读 · 0 评论 -
Hybrid App实现原理
现在市面上App,迭代变更比较频繁,为了满足业务需求,基本上都采用了Hybrid混编,来实现业务的快速上下线。H5灵活开发的特点和线上热更新的机制是非常适合业务频繁迭代的,我们需要一套完整的Hybrid技术架构方案来充分利用 H5 强大的开发和迭代能力,又能赋予 H5 强大的底层能力和用户体验,同时能复用现有的成熟 Native组件。原创 2021-02-03 00:05:48 · 6774 阅读 · 5 评论 -
Gradle dependencies 解决项目依赖冲突
1.查看版本号$ gradle -v编译打包检查依赖并编译打包gradle build 编译跳过测试 gradle build -x test 编译打包tgz包,跳过测试类gradle releaseTarGz -x signArchives -x test 这里注意的是 gradle build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如gradle assembl原创 2021-01-24 23:43:50 · 4605 阅读 · 0 评论 -
Android App 启动时立即崩溃无法debug的解决方法
方法一在android开发者选项里,选择调试应用的列表里选择要调试的应用,然后把后面的等待调试器开关打开即可。方法二我们可以首先通过adb shell am set-debug-app -w ,然后再启动进程,系统会弹出一个Dialog提醒Application正在Waiting For Debugger。实际上这个时候应用程序进程已经fork出来了,只不过是阻塞在ActivityThread.handleBindApplication()方法里面,它通过调用Debug.waitForDebugg原创 2021-01-24 23:35:12 · 3851 阅读 · 0 评论 -
Android 状态栏样式设置
通过setStatusBarBgColor方法直接设置颜色即可,状态栏字体颜色会根据背景颜色进行改变。只支持6.0及以上版本。public void setStatusBarBgColor(@ColorInt int color) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // 设置状态栏底色颜色 getWindow().addFlags(WindowManager.LayoutParams原创 2021-01-14 23:39:29 · 1142 阅读 · 3 评论 -
Android开发助手2020
Mac安装Jadx反编译工具https://github.com/skylot/jadx.gitAndroid 混淆文件资源分类整理之二:将混淆文件拆分成更小粒度的混淆文件https://blog.youkuaiyun.com/ouyang_peng/article/details/106871878/Android 混淆通用配置 支持 androidx#下面代码中的路径配置,你要修改成与你相对应的路径#引入依赖包rt.jar(jdk路径)(注意:如在makeJar的时候提示指定了两次,可以将其注释掉)原创 2021-01-14 23:33:24 · 337 阅读 · 1 评论 -
安卓使用getResources().getIdentifier()动态的根据一个资源名获得到对应的资源id
近期在看安卓动画机制的时候看到一段代码 AnimationDrawable animDrawable=new AnimationDrawable();for(int i=0;i<5;i++){ int id=getResurces().getIdentifier("common_loading_"+i,"drawable",getPackageName()); Drawable drawable=getResources().getDrawable(id); animDrawable.原创 2020-12-27 15:26:41 · 1944 阅读 · 0 评论 -
idea的查看git提交记录history,但是不显示每次提交对应的细节文件
https://blog.youkuaiyun.com/u010886217/article/details/110207121一、问题描述最近使用idea遇见非常头痛问题。虽然使用idea的VCS功能进行代码管理非常方便,但是,最近使用时竟然产生了一个很头痛的问题:就是点击项目右键-》git-》Show History,查看git提交记录。之前都是显示对应的提交细节文件,但是最近没有之前使用idea都是显示提交批次的具体代码但是,这次idea只是显示提交记录细节,而不显示提交批次对应代码,这样,就无法知道转载 2020-12-24 15:31:10 · 5887 阅读 · 17 评论 -
Recylerview notifyDataSetChanged 界面图片一闪
Recylerview的item,当数据改变时,我们会调用 notifyDataSetChanged,这个时候列表会刷新,图片会一闪,为了使 url 没变的 ImageView 不重新加载,我们可以用setHasStableIds(true);使用这个,相当于给ImageView加了一个tag,tag不变的话,不用重新加载图片。但是加了这句话,会使得 列表的 数据项 重复!! 我们需要在我们的Adapter里面重写 getItemId就好了。@Overridepublic long getItem原创 2020-07-07 14:25:09 · 821 阅读 · 0 评论 -
Android内存泄漏分析
内存泄漏指的是程序中不再使用的对象对象由于某些原因无法被正常GC回收。对象没有及时释放,就会占据宝贵的内存空间,因而导致后续分配内存的时候,内存空间不足出现OOM。如果无用对象占据的控件越大,那么可分配的空闲空间就越小,GC会更容易被处罚,而GC时会短暂停止其他线程,因而可能引起卡顿等现象。Java内存分配策略JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线...转载 2020-01-06 17:32:32 · 756 阅读 · 0 评论 -
OPPO 设备报错 android.content.res.AssetManager.finalize() timed out after 120 seconds
这是从后台看到的一个错误日志,在一些OPPO 机型会报错 ,如 R9 等。可以看到出错的设备基本是OPPO 的一些设备,推测应该是极光的SDK在部分OPPO设备导致,在极光论坛搜索该错误能找到很多帖子。那么这类问题是怎么出现的呢?有什么解决办法呢?这篇文章为将探索 finalize() timeout 的原因和解决方案,分享我们的踩坑经验,希望对遇到此类问题的开发者有所帮助。在一些大型安...原创 2019-12-31 10:50:29 · 2361 阅读 · 1 评论 -
androidstudio library Module 依赖aar 在主app中提示找不到
在lib module 的 build.gradle 中添加路径repositories { jcenter() flatDir {// dirs 'libs', "../woMaiPush/libs/" // aar目录 dirs 'libs' // aar目录 }然后在主Module 的 build.gradle 中添加...原创 2019-12-26 16:56:31 · 1716 阅读 · 0 评论 -
OkHttp Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19
Android OkHttp实现HTTPS访问,支持Android 4.X系统HTTPS访问看到这个错误信息Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19,应该是版本的问题,去okhttp查了一下原来是自己没仔细看介绍okhttp的fix分支3.12.x版本,而我项目...原创 2019-12-23 18:19:06 · 4113 阅读 · 0 评论 -
Android开发百科全书③
android 关于dialog全屏和非全屏设置为了将dialog设置为全屏,我们经常在布局文件中将父控件宽高设置为math_parent,但是发现效果并没有像我们想象的实现全屏。甚至我们将style设置为true但是也并没有什么效果。下面说说我的方法吧,写的不好的地方,希望指正啊。方法一:dialog设置全屏方法一:获取屏幕的大小,然后设置dialog的宽高为屏幕的宽高。Display ...原创 2019-12-13 10:11:38 · 857 阅读 · 1 评论 -
高性能屏幕适配解决方案
思路:通过计算设计稿上UI的 宽高与实际设备上的宽高,按比例缩放。float scaleX = deviceWidth/standWidth;float scaleY = deviceHeight/standHeight;步骤:1.自定义ViewGroup 重写 onMeasure方法,根据scale比例,重新缩放childview。2. 缩放margin、padding。3. 使用自...原创 2019-12-09 10:59:07 · 403 阅读 · 0 评论 -
Android 7.0 行为变更 通过FileProvider在应用间共享文件
Android 7.0 行为变更 通过FileProvider在应用间共享文件原创 2018-05-22 09:30:20 · 483 阅读 · 0 评论 -
开发中有遇到卡顿问题如何处理?
面试官又来了:你的app卡顿过吗?卡顿是由于主线程有耗时操作,导致View绘制掉帧,屏幕每16毫秒会刷新一次,也就是每秒会刷新60次,人眼能感觉到卡顿的帧率是每秒24帧。所以解决卡顿的办法就是:耗时操作放到子线程、View的层级不能太多、要合理使用include、ViewStub标签等等这些,来保证每秒画24帧以上。卡顿的底层原理是什么?如何理解16毫秒刷新一次?假如界面没有更新操作,Vi...转载 2019-10-31 11:35:29 · 2031 阅读 · 1 评论 -
PermissionsDispatcher使用详解
PermissionsDispatcher是一个基于注解、帮助开发者简单处理Android 6.0系统中的运行时权限的开源库。避免了开发者编写大量繁琐的样板代码。开源地址:https://github.com/permissions-dispatcher/PermissionsDispatcher文档介绍:http://hotchemi.github.io/PermissionsDispatc...原创 2019-10-12 16:22:29 · 1196 阅读 · 0 评论 -
Android-禁用系统字体缩放
设计师辛辛苦苦做出设计稿,开发人员辛辛苦苦把UI调好了,但是在Android用户修改系统的默认字体大小,原先的设计很容易失效,变得非常难看,考虑你的用户人群,又不想因为用户变更默认字体大小导致app的样式走样,我们可以这么做:1.字体使用dp/dip代替spdp/dip(device independent pixels):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px...转载 2019-10-12 10:22:51 · 1754 阅读 · 0 评论 -
*Android JSON解析(Android原生解析与FastJson Gson)性能比较
Android 常用传递数据的格式 分两种 一种XML另一种 JSON。 JSON与XML的相比较 的优点是 作为数据传输格式,跟XML类似,但是比XML更加轻巧 由于JSON是JavaScript的原生格式,所以JSON不需要包含特定内容的首部信息 所以速度 远远快于XML。 现在我们常用解析 JSON的方法一般 有以下几种 1 android 原生 api 解析 2.阿里巴巴 的原创 2015-04-10 20:35:12 · 3168 阅读 · 0 评论 -
*Fragment与Activity生命周期的协调
拥有Fragment的Activity的生命周期直接影响了其中的Fragment的生命周期,这样,针对Activity的每一个生命周期的回调都会有一个类似的针对Fragment的回调。例如,当Activity收到onPause()回调时,在Activity中每个Fragment都会收到onPause()回调。但是,Fragment有几个额外的生命周期回调方法,用来处理跟Activity的交原创 2014-11-07 15:24:05 · 1016 阅读 · 0 评论 -
*Android shape属性整理
有时候 ,为了满足一些需求,我们要用到 shape 去定义 一些背景,shape 的用法 跟图片一样 ,可以给View设置 android:background=”@drawable/shape”, 定义的shape 文件,放在 res/shape 目录下通常我们可以用shape 做 button 的背景选择器,也可以做切换tab 时,底部的下划线。先看我们用shape 都可以做什么<?xml v原创 2015-07-08 16:13:24 · 2570 阅读 · 0 评论 -
*自定义布局的Toast和Dialog
App中 与人 交互 常用的 方式 有 通知栏、 对话框(Dialog) 以及 吐司。默认的 Toast是下面这样子的而有时候 我们项目需要 带图片的 吐司,比如那 怎么把图片 加进去呢? 如果是 Activity ,我们知道 只要做一个xml 布局, 将图片资源 引用进去 , 然后 通过 SetContentView(R.layout.activit原创 2015-10-19 12:30:54 · 1135 阅读 · 1 评论 -
android抓包工具——fiddler与charles的基本操作(弱网模拟,map local/remote、breakpoint 等)
本文地址:http://blog.youkuaiyun.com/u011733020首先,写这个只是为了学习,不是要做什么违法的事情,如果有问题,有关部门 请联系我,立马删除。 不要查我水表。正题:这里介绍 抓包的关键,Fiddler ,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯。我们就是用这款软件抓取 ,我们手机app 访...原创 2015-06-29 13:47:22 · 14964 阅读 · 4 评论 -
播放RTMP协议的流媒体的两种选择
播放网络视频,通常解析库我们可以有两个选择 FFMPEG 或者 vitamio。什么FFMPEG?FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从原创 2015-12-31 14:57:33 · 2754 阅读 · 0 评论 -
RippleEffect(水波纹效果)的实现
学习 谷歌 material design的交互设计、向新技术靠拢~ 由于谷歌的只有在5.0+才可以有这个效果~ 而我们手头手机大部分还是4.+的、因此自己去实现这个效果、让各种版本的都可以用 无疑是挺好的、这个Demo 实现了以下几点功能:①:要实现水波纹效果,首先这个View 必须是可点击的,也就是说clickable :true 才可以触发 比如默认 Button 的Cl转载 2015-12-02 11:20:28 · 3546 阅读 · 1 评论 -
Git上面的右滑退出当前Activity
使用说明:1 要打开的Activity 继承 SwipeBackActivity,并且在Manifest 文件中注册 android:theme="@style/swipeTheme"。 2 在新Activity 内设置允许滑动退出Activity, setSwipeBackEnable(true);。3 values 目录下的 attrs 与style需要拷贝到工程。4 Demo原创 2016-03-08 11:02:03 · 1502 阅读 · 0 评论 -
Android 自定义View 入门——FlowLayout实例(流布局)
了解了自定义View的流程,那么接下来最好就是对着一个自定义View去分析,加深一下对步骤的理解,这里拿FlowLayout去分析。这样一个自定义View 是继承的ViewGroup,因为它里面还有一个个的子View 填充,因此我们分析出这是继承自ViewGroup。然后接着分析,这个布局会自动判断 当宽度达到屏幕的宽度时,自动换到下一行,那接下来我们就去实现这样一个布局。第一步:定义My原创 2016-03-11 20:19:11 · 4833 阅读 · 5 评论 -
View的简介
认识一个新的事物,首先我们从概念上讲,我们需要知道,这个事物 是什么,这个事物有什么用途?对应到View 上,我们要搞明白 View 的定义以及工作原理。 1.View是什么? View是屏幕上的一块矩形区域,它负责用来显示一个区域,并且响应这个区域内的事件。可以说,手机屏幕上的任意一部分看的见得地方都是View,它很常见,比如 TextView 、ImageView 、Button原创 2016-03-11 19:58:51 · 17459 阅读 · 9 评论 -
将Library上传到Jcenter
http://www.jianshu.com/p/0ba8960f80a9前言习惯了compile 'com.android.support:appcompat-v7:22.2.0'这样一句话帅气的引用某个库.这次自己尝试一下如何上传到'JCenter'~这里我以我自己的CrashCatcher为例来讲解一下.PS:工具: AndroidStudio,G转载 2015-12-04 08:58:25 · 956 阅读 · 0 评论 -
看完这篇文章,你就了解了Android Handler的一切
今天的主人公是Handler,Handler 也是进行通讯用的,我们Android系统的运行,比如应用的启动,手机来电的提示,Activity的创建启动,都离不开Handler。大家都知道Handler可以跨线程通信,可以更新界面,让线程与线程进行通信,可以让某一条消息进入消息队列,等待被执行。而我在项目里也跟大家一样,拿它来接收通知,更新界面。 但是我一直都在用,但却没有认真地看过它的工作原理,而作为一个有进取心的程序员,我们不能只会用,而不知道它的工作过程,为了自己不一直平庸的做一个初级程序员,原创 2015-11-04 18:28:25 · 3382 阅读 · 1 评论 -
播放视频的框架Vitamio的使用问题
原文:http://blog.youkuaiyun.com/sunalongl/article/details/30252127?utm_source=tuicool&utm_medium=referral以前用过这个牛逼的框架,后来又随意搞了下,发现播放不了视频了,搞了老半天才搞好,今天又随便整了下,发现又不行了,我勒个插!现在终于又搞出来了,发现我总是把步骤搞错或少写了些东西转载 2015-10-30 11:33:30 · 1504 阅读 · 0 评论 -
Android Activity 、 Window 、 View之间的关系
本想分析一下触摸事件的分发响应机制,但是发现分发事件的方法在Activity、View以及ViewGroup中各自存在 ,如图1表所示 图一这样的话又牵扯到了三者之间的关系,那索性先理清楚Activity与另外两者的关系 ,在去分析触摸事件比较好。什么是 Activity 、View 、 Windo原创 2015-10-28 13:28:39 · 14202 阅读 · 6 评论 -
Android Touch事件的分发响应机制
关于Touch 时间的分发响应文章有很多了,但是自己理一遍的印象 要比看别人的深刻,这里自己记一下,也便与以后回过头来翻! Touch 事件 对于 新手来说,是很困扰的,因为事件之间的传递过程,我们还不理解,去翻看代码,翻着 翻着,反而越发不清晰,这里 我跟大伙一起理一下传递机制。首先 ,一点大家需要知道 所谓的 Touch事件包含的几个动作:MotionEvent.ACT原创 2015-10-29 21:52:31 · 4809 阅读 · 6 评论 -
*SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)
Volley 请求 数据 报错, 在手机数据下可以获取到服务器返回的数据,在WiFi 环境下 报错如下:com.android.volley.NoConnectionError: java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)问题:公司 WiFi 设置了原创 2015-10-10 18:10:25 · 10773 阅读 · 0 评论 -
*Android 多线程下载 仿下载助手
今天带来一个多线程下载的 例子。先看一下效果,点击 下载 开始下载,同时显示下载进度,下载完成,变成程 安装,点击安装 提示 安装应用。界面效果线程池 ThreadPoolExecutor在下面介绍实现下载原理的时候,我想尝试倒着来说,这样是否好理解一点? 我们都知道,下载助手,比如360, 百度的 手机助手,下载APP 的时候 ,都可以同时下载多个,所以,下载肯定原创 2015-07-23 09:13:15 · 11365 阅读 · 31 评论 -
*Android 多线程下载 仿下载助手(改进版)
首先声明一点: 这里的多线程下载 并不是指的 多个线程下载一个 文件,而是 每个线程 负责一个文件。真正的多线程 希望后面能给大家带来。 ------------- 欢迎 爱学习的小伙伴 加群 ------------- -------------android交流群:230274309--------------------------一起分享,一起进步!原创 2015-07-31 22:41:15 · 3171 阅读 · 10 评论 -
android app 开发过程中 对于性能优化的总结
一款手机应用 从开发过程中就要做好 性能优化,这样才能 让用户体验度 提升, 假如 我们打开一个应用 出现卡顿, 不流畅,则会很影响 用户对该应用的态度,产品狗 都很注意这些人机交互方面的 体验。 谷歌官方也是一直在优化 android 系统,不论是 碎片化处理 还是 系能 上面,这方面 ios 就做的比较好,配置比 android 低,但是流畅度却比android高,体验效果更好原创 2015-05-13 00:33:48 · 3799 阅读 · 0 评论 -
ViewStub动态加载布局提高UI加载性能
ViewStub 定位:ViewStub 是一个不可见,size 大小为0 的一个View ,用于运行时 延迟inflate layout布局的。当ViewStub 变为可见,或者 调用了inflate() 方法,这个Layout资源会被加载。然后ViewStub会将加载的View或者Views 替换他自己在父布局中的位置因此ViewStub 一直存在,直到调用了setVisibility或者in转载 2016-06-14 16:18:22 · 4610 阅读 · 0 评论