andriod
文章平均质量分 84
liuyu0915
这个作者很懒,什么都没留下…
展开
-
android:layout_weight权重与warp_content配合使用
通常使用权重时,layout_wight layout_height 一般设置为0. 这里讲一下宽属性设置为warp_content,再结合权重使用。权重尺寸的计算方式android:layout_weight的真实含义是: 那么该 View的宽度 等于 原有宽度(android:layout_width)加上剩余空间的占比!剩余空间 = 父控件空间 - 所有子控件所需要的空间示例一 : wight和 match_parent使用设屏幕宽度为w, 两个TextView的宽度设置...原创 2022-01-24 15:37:18 · 3911 阅读 · 2 评论 -
android启动背景图实践
简介创建app启动背景图,保证图片不会被拉伸变形,适配4.0及以上手机。实现方案方案一:使用.9图,这样可以避免图片被拉伸。方案二:使用 <layer-list />标签,将背景图切成多个小图,然后组合起来。这种方案实现稍复杂,但背景图占用内存小,组合灵活,可以完成动画等复杂的需求。推荐使用这种。这里详细分享一下方案二,后面会分析一下方案一的利弊。示例:完成如下图所示启动背景图该启动背景图由四张小图组合完成。由上往下数,第二张图(“找好投顾。。。。”)的宽度为屏幕原创 2021-04-13 16:41:33 · 871 阅读 · 0 评论 -
android图片适配(图片大小与屏幕密度)Bitmap占用内存计算
概述android项目中图片适配流程。屏幕密度:单位英寸面积上的像素点数,与分辨率是两个不同的概念。获取屏幕密度方法一:adb 命令adb shell wm density方法二:api调用resource.getDisplayMetrics().densityDpildpi: 屏幕密度为120的手机设备mdpi: 屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px)hdpi: 屏幕密度为240的手机设备xhdp原创 2021-04-07 13:09:42 · 3266 阅读 · 2 评论 -
安卓客户端使用矢量图
概述在android客户端使用矢量图,可以节省内存开销。什么是矢量图矢量图,称为绘图图像,定义为一系列由线连接的点。按照path 路径绘制出来,写像素无关,可以将它缩放到任意大小和以任意分辨率在输出设备上打印出来,都不会影响清晰度。使用矢量图节省内存开销原理项目中使用的 png webp jpg 等位图,显示在屏幕上,消耗的内存与相素有关。通过getResource().getDrawable(R.drawable.pic) 获取的 Drawable对象为BitmapDrawab..原创 2021-03-25 15:48:15 · 1149 阅读 · 1 评论 -
vector2Drawable(批量将png图片转换成android使用的矢量图 )
概述将适合转换成矢量图的图片,批量处理,转换成适合安卓项目使用的 vector标签的xml。适合转成矢量图的图,一般为本地加载的图标,图片色彩和形状简单有规律。复杂的图片是不适合转换成矢量图的,即使转换过来,可能也严重失真,且造成转换的矢量图path信息大的问题。实现批量转换图片格式第一步先统一图片格式,将项目中jpg webp png等图片全部转换成 png图片,png图片有透明度信息。推荐转换工具XnConvert这款软件转换是相当的快且方便,极力推荐。...原创 2021-03-05 13:58:55 · 4359 阅读 · 6 评论 -
自定义Drawable(一)
自定义Drawable这篇文章要介绍的是自定义Drawable,是通过继承drawable子类,重写draw(Canvas canvas)方法,实现稍复杂的drawable。准确的来说这篇要介绍的是自定义GradientDrawable在Android开发中,会经常使用shpae 标签,如下段代码,通过xml绘制一个Drawable. 这种方式的非常简洁方便,且在Studio中可视化,但是缺点也非常明显,就是不能绘制稍复杂的drawable对象。通常我们用它来绘制一些单一的图标或背景。<原创 2021-02-05 16:29:04 · 941 阅读 · 0 评论 -
android测量view宽高
应用场景:测量未被添加、未被渲染view的宽高例如 在view未被绘制显示的情况下,获取列表中的item view 高度,某TextView在设置文本后它所需宽度。获取View的宽高度方法有很多,多数是在View绘制出来之后才能获取到的,本章讲的是直接测量 view对象所需要的尺寸。解决方案:调用view.measure()方法测量它的宽高度第一步:拿到view对象第二步:设置宽高属性(必须设置尺寸模式)备注:必须设置模式 View.MeasureSpec.EXACTLY 或..原创 2021-01-19 15:06:58 · 2682 阅读 · 0 评论 -
android ANR实战(利用android studio profiler定位ANR)
案例:个股详情界面失去焦点后发生ANR,必现。在发生ANR生启用android stuiod profiler, 调用CPUSample Java Methods 开启cpu监测一段时间。结果如下:由上图可以看到,main线程中程序一直在执行查看主线程方法调用情况从上面两个图可以看出来,主线程 markState()方法执行占用CPU高达99.60%,耗时长,则表示一定是此处造成的ANR。从调用顺序可以看出,是由于StockD...原创 2020-09-15 16:21:55 · 1785 阅读 · 0 评论 -
Android自定义View实现随手势滑动控件
Android自定义View实现随手势滑动控件需求:1.需要有单击事件2.可以随手势滑动3.不会因父控件调用了 requestLayout()方法而回到初始位置4.可以根据列表(ListView recyclerView)的滑动而隐藏,列表的停止而显示。实现随手势滑动思路:重写onTouchEvent(MotionEvent event) 方法,根据移动量,调用...原创 2019-11-01 14:07:02 · 2825 阅读 · 1 评论 -
监听Fragment对用户是否真实可见
需求:监听Fragment对用户真实可见或不可见网上有很多方法,专门整理了一下。先介绍四个关于fragment对用户是否可见的方法1.onHiddenChanged方法备注:当fragment被执行show() hide()方法时会调用该方法。同时页面和前台后切换是不会执行该方法。@Overridepublic void onHiddenChanged(...原创 2019-07-12 18:01:15 · 1476 阅读 · 0 评论 -
根据flavors设置buildType中debug的签名文件
设置buildType中debug的签名文件(不使用debug默认的签名文件)前言:android studio运行编译安卓项目,其debug模式会使用默认的keystory。通过获取flavor信息设置签名文件,在debug模式下是不生效的,它仍然使用默认的keystory。此时通过studio安装至客户端的apk签名信息并不是我们所需要的。而我们往往需要给每一个包指定签名文件。...原创 2019-05-23 19:57:52 · 2351 阅读 · 3 评论 -
使用360加固宝命令行方式加固
使用360加固宝命令行方式加固将360加固宝安装程序下载之后,解压,然后通过winodws的dos命令来调用360加固程序,完成登录,设置,加固应用的操作。优点:可以使用程序控制加固工作,将生成的release包在java工程中进行加固,签名,生成多渠道包等工作,不再使用客户端手动加固应用,防止出错,方便快捷。而且可以将我们创建的一个Release包在java工程中完成一系列操作,直致生...原创 2019-05-23 17:34:11 · 5799 阅读 · 0 评论 -
360加固宝客户端使用
360加固宝客户端使用360加固宝官网:http://jiagu.360.cn/#/global/index使用360加固宝客户端在线加固。步骤一:下载360加固宝步骤二:注册并登录360加固宝客户端步骤三:设置加固选项 (仅说明“应用加固”选项)这一项非常重要。在360加固宝中,有默认设置。应用加固选项中,有四个设置。如下图 。...原创 2019-05-22 11:16:35 · 4674 阅读 · 0 评论 -
Android打包工具packer-ng-plugin的使用 快速生成渠道包
简介:该工具快速生成渠道包。它可以将一个包快速生成多个渠道包github地址 :https://github.com/mcxiaoke/packer-ng-plugin使用场景:安卓app上线,需要创建各个市场和推广渠道的apk安装包。每个安装包携带对应的渠道信息。基本所有安卓项目需要创建渠道包,而且上线时间越长,推广渠道会越来越多,时有更新,同时可能还会有创建马甲包的需求。在实...原创 2019-05-22 10:40:45 · 2580 阅读 · 0 评论 -
升级打包工具packer-ng-plugin支持V3签名
升级打包工具packer-ng-plugin支持V3签名该库github:https://github.com/mcxiaoke/packer-ng-plugin升级后jar包下载地址:https://download.csdn.net/download/liuyu0915/11200365前言:打包工具packer-ng-plugin生成多渠道包的核心代码是集成美团多渠道打包工...原创 2019-05-24 15:23:19 · 1267 阅读 · 6 评论 -
studio 编译报错:compileSdkVersion 'android-24' requires JDK 1.8 or later to compile.
翻译: compileSdkVersion android-24”需要JDK 1.8或更高版本编译。报错现象如下图:原因:studio默认选择编译的版本为1.8,而当前jdk环境不是1.8. 解决方法:1. 在build.gradle中查看编译版本;2.查看studio设置,修改studio设置的jdk设置。方法一:修改JDK,更改为原创 2016-08-28 17:07:37 · 1011 阅读 · 0 评论 -
阿里hotfix使用心得
到现在为止,已经出来了几个比较成熟的热修复框架,今天给大家分享一下阿里hotfix使用心得。针对几个热修复框架的比较,我就不再累述了,已经有专业文章来分析这一些了。阿里hotfix实现功能实现在线热修复,用户打开APP后就可实现自动拉取补丁包,并实现修复bug.可以说在用户不知道的情况下修复了问题。非常实用的一个框架。注意事项1.该框架不支持修复资源文件原创 2017-01-23 11:32:59 · 532 阅读 · 0 评论 -
提升gradle编译速度和gradle优化管理 在
一. 我们先说一下提升Gralde编译速度. 针对这个问题, 先讲一下配置相关设置提升编译速度. 我发现在build.gradle文件中如果设置了很多渠道, 在编译时会影响编译速度, 尤其是windows系统下运行。 对gradle中渠道进行优化, 可以提升编译速度1. 在user/.gradle文件下创建gradle.properties文件, 并在中写上org.gradle原创 2017-04-07 14:08:55 · 906 阅读 · 0 评论 -
LitePal使用遇到的坑
LitePal的使用看郭神的帖子就差不多了,简间易用,上手快。这是它的链接http://blog.csdn.net/guolin_blog/article/details/38461239我跟大家分享的是在使用中遇到的一些坑:1. android.database.sqlite.SQLiteException: Can't downgrade database from v原创 2017-01-23 11:15:15 · 18267 阅读 · 8 评论 -
Glide加载https图片
实现效果: glide加载https图片.另外,无论是否是动态图片, 都用 Glide.with(this).load(imageUrl).into(imageView);使用该API可以加载动态图.我并没有原创实现代码, 我和大家一样, 通过谷歌搜索后, 看到别人的帖子, 然后将原创作者的代码拷下来, 测试,解决问题, 再打包, 最后方便供给大家使用的.代码来源:htt原创 2017-05-12 10:19:09 · 2540 阅读 · 3 评论 -
bugly自动升级在android7.0系统上重复下载 bugly与takephoto适配7.0冲突问题
该博客解决bugly自动升级无法适配7.0系统. bug现象: 在7.0及以上系统上,bugly更新app后,不停重复下载, 无法进入安装界面. 同时, 在解决bugly该bug时, 与takephoto适配7.0的代码发生冲突.一. bugly升级库无法适配7.0系统原因因为7.0系统增强了私有文件访问权限, 下载新版本的APP后, 可能没有权限拿到下载的APP的路径, 所原创 2017-05-22 10:30:17 · 4897 阅读 · 9 评论 -
导入takephoto库编译失败 与glide库冲突 排除依赖
导入takephoto库编译失败 与glide库冲突当您的项目中导入了glide库, 同时也导入了takephoto库时, 出现编译失败. 编译报错指向于Glide库某文件原因: 这是因为takephoto库中本身依赖了三个库,其中一个库是照片墙的库multipleimageselect从github上打开该开的build.gradle可以看到该库又依赖原创 2017-05-22 13:51:22 · 5569 阅读 · 3 评论 -
gradle批量配置productFlavors(渠道)
应用场景:1. 将渠道中参数进行统一管理。 2.该项目需要生成三个不同包名应用, 包括应用图标, 分享图标, 启动页,应用名称,友盟后台key, 微信QQ微博,推送等KEY,渠道名,渠道号目的:统一管理,简洁代码,方便维护思路: 设置渠道时, 先不要在渠道内设置任何参数, 在渠道设置完成后, 拿到渠道的集合对象,遍历,通过渠道名来识别不同版本,然后设置不同的key,渠道号,原创 2017-04-07 15:26:09 · 2831 阅读 · 0 评论 -
Retrofit网络异常回调中拿到网络请求url等数据
前言开心原创哦Retrofit 与RxJava结合,异常 处理都走了onError(Throwable t) 方法. 在该异常回调中,我们拿不到网络请求url等数据,只能拿到Throwable对象。使用场景异常统一处理,但异常回调中无法区分哪一个接口网络请求出现异常了。例如一个界面有多个接口,其中某个接口请求出现异常了,在异常统一处理里面无法区分。(使用场景):界面A有 下拉刷...原创 2018-08-23 11:32:59 · 3346 阅读 · 1 评论 -
安卓手机屏幕同步工具asm.jar
工具可以到我的资源里面下载原创 2016-06-26 16:56:09 · 594 阅读 · 0 评论