- 博客(32)
- 资源 (5)
- 收藏
- 关注
原创 ImageView ScaleType扩展
扩展ImageView。扩展ScaleType属性,和增加srcGravity属性,可设置src显示位置。
2024-06-05 13:58:21
582
2
原创 Android Studio修改创建新布局时默认根布局
打开设置, Editor> File and Code Templates > Other > layoutResourceFile.xml。将Android Studio默认布局ConstraintLayout切换成LinearLayout。备注:创建时提示根布局仍然为ConstraintLayout,不用管这个,实际创建的是根据模板来的。
2023-12-29 11:01:13
1165
原创 Android 自定义带箭头对话框背景
自定义drawable,带箭头对话框背景,三角形+矩形组合。应用于对话框背景、提示语背景等。可设置箭头显示方向、箭头大小、箭头导圆角尺寸、矩形尺寸、矩形导圆角尺寸、背景颜色、drawable padding值(影响宿主控件padding)。希望能给大家带来方便。
2023-07-17 16:57:35
2186
2
原创 Android 多边形导圆角(Path画折线导圆角)
实现原理:三个点,2条直线相交,给中间点连接处导圆角。设圆角半径为radius, 三个点分别为p2, p3,p1, 如下图所示:给p3点处导圆角。先求出导圆角处连接的2点p4、p5坐标,再用path连接p2和p4,然后通过p4、p3、p5绘制贝塞尔曲线连接p4、p5两个点,最后连接p5、p1两个点。总结:计算圆角的起始和结束点,使用贝塞尔曲线绘制圆角。
2023-07-14 16:31:19
2458
原创 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
4031
2
原创 自定义InsetDrawable
一、概述自定义InsetDrawable。系统原生的InsetDrawable 是Drawable的子类,是用于嵌入一个Drawable,它可以设置一个Drawable对象,且给该drawable设置inset属性,组成一个InsetDrawable对象。它可以实现设置的子Drawable与宿主控件区域有一定的间距。由属性 insetTop、insetLeft等体现。 Drawable getDrawable(); void setDrawable(Drawable dr) <?..
2021-09-13 17:44:09
430
2
原创 android启动背景图实践
简介创建app启动背景图,保证图片不会被拉伸变形,适配4.0及以上手机。实现方案方案一:使用.9图,这样可以避免图片被拉伸。方案二:使用 <layer-list />标签,将背景图切成多个小图,然后组合起来。这种方案实现稍复杂,但背景图占用内存小,组合灵活,可以完成动画等复杂的需求。推荐使用这种。这里详细分享一下方案二,后面会分析一下方案一的利弊。示例:完成如下图所示启动背景图该启动背景图由四张小图组合完成。由上往下数,第二张图(“找好投顾。。。。”)的宽度为屏幕
2021-04-13 16:41:33
977
原创 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
3531
2
原创 安卓客户端使用矢量图
概述在android客户端使用矢量图,可以节省内存开销。什么是矢量图矢量图,称为绘图图像,定义为一系列由线连接的点。按照path 路径绘制出来,写像素无关,可以将它缩放到任意大小和以任意分辨率在输出设备上打印出来,都不会影响清晰度。使用矢量图节省内存开销原理项目中使用的 png webp jpg 等位图,显示在屏幕上,消耗的内存与相素有关。通过getResource().getDrawable(R.drawable.pic) 获取的 Drawable对象为BitmapDrawab..
2021-03-25 15:48:15
1224
1
原创 vector2Drawable(批量将png图片转换成android使用的矢量图 )
概述将适合转换成矢量图的图片,批量处理,转换成适合安卓项目使用的 vector标签的xml。适合转成矢量图的图,一般为本地加载的图标,图片色彩和形状简单有规律。复杂的图片是不适合转换成矢量图的,即使转换过来,可能也严重失真,且造成转换的矢量图path信息大的问题。实现批量转换图片格式第一步先统一图片格式,将项目中jpg webp png等图片全部转换成 png图片,png图片有透明度信息。推荐转换工具XnConvert这款软件转换是相当的快且方便,极力推荐。...
2021-03-05 13:58:55
4837
6
原创 自定义Drawable(一)
自定义Drawable这篇文章要介绍的是自定义Drawable,是通过继承drawable子类,重写draw(Canvas canvas)方法,实现稍复杂的drawable。准确的来说这篇要介绍的是自定义GradientDrawable在Android开发中,会经常使用shpae 标签,如下段代码,通过xml绘制一个Drawable. 这种方式的非常简洁方便,且在Studio中可视化,但是缺点也非常明显,就是不能绘制稍复杂的drawable对象。通常我们用它来绘制一些单一的图标或背景。<
2021-02-05 16:29:04
1107
原创 android测量view宽高
应用场景:测量未被添加、未被渲染view的宽高例如 在view未被绘制显示的情况下,获取列表中的item view 高度,某TextView在设置文本后它所需宽度。获取View的宽高度方法有很多,多数是在View绘制出来之后才能获取到的,本章讲的是直接测量 view对象所需要的尺寸。解决方案:调用view.measure()方法测量它的宽高度第一步:拿到view对象第二步:设置宽高属性(必须设置尺寸模式)备注:必须设置模式 View.MeasureSpec.EXACTLY 或..
2021-01-19 15:06:58
2818
原创 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
1987
原创 Android自定义View实现随手势滑动控件
Android自定义View实现随手势滑动控件需求:1.需要有单击事件2.可以随手势滑动3.不会因父控件调用了 requestLayout()方法而回到初始位置4.可以根据列表(ListView recyclerView)的滑动而隐藏,列表的停止而显示。实现随手势滑动思路:重写onTouchEvent(MotionEvent event) 方法,根据移动量,调用...
2019-11-01 14:07:02
2958
1
原创 监听Fragment对用户是否真实可见
需求:监听Fragment对用户真实可见或不可见网上有很多方法,专门整理了一下。先介绍四个关于fragment对用户是否可见的方法1.onHiddenChanged方法备注:当fragment被执行show() hide()方法时会调用该方法。同时页面和前台后切换是不会执行该方法。@Overridepublic void onHiddenChanged(...
2019-07-12 18:01:15
1548
原创 升级打包工具packer-ng-plugin支持V3签名
升级打包工具packer-ng-plugin支持V3签名该库github:https://github.com/mcxiaoke/packer-ng-plugin升级后jar包下载地址:https://download.youkuaiyun.com/download/liuyu0915/11200365前言:打包工具packer-ng-plugin生成多渠道包的核心代码是集成美团多渠道打包工...
2019-05-24 15:23:19
1314
6
原创 根据flavors设置buildType中debug的签名文件
设置buildType中debug的签名文件(不使用debug默认的签名文件)前言:android studio运行编译安卓项目,其debug模式会使用默认的keystory。通过获取flavor信息设置签名文件,在debug模式下是不生效的,它仍然使用默认的keystory。此时通过studio安装至客户端的apk签名信息并不是我们所需要的。而我们往往需要给每一个包指定签名文件。...
2019-05-23 19:57:52
2453
3
原创 使用360加固宝命令行方式加固
使用360加固宝命令行方式加固将360加固宝安装程序下载之后,解压,然后通过winodws的dos命令来调用360加固程序,完成登录,设置,加固应用的操作。优点:可以使用程序控制加固工作,将生成的release包在java工程中进行加固,签名,生成多渠道包等工作,不再使用客户端手动加固应用,防止出错,方便快捷。而且可以将我们创建的一个Release包在java工程中完成一系列操作,直致生...
2019-05-23 17:34:11
5975
原创 360加固宝客户端使用
360加固宝客户端使用360加固宝官网:http://jiagu.360.cn/#/global/index使用360加固宝客户端在线加固。步骤一:下载360加固宝步骤二:注册并登录360加固宝客户端步骤三:设置加固选项 (仅说明“应用加固”选项)这一项非常重要。在360加固宝中,有默认设置。应用加固选项中,有四个设置。如下图 。...
2019-05-22 11:16:35
5581
原创 Android打包工具packer-ng-plugin的使用 快速生成渠道包
简介:该工具快速生成渠道包。它可以将一个包快速生成多个渠道包github地址 :https://github.com/mcxiaoke/packer-ng-plugin使用场景:安卓app上线,需要创建各个市场和推广渠道的apk安装包。每个安装包携带对应的渠道信息。基本所有安卓项目需要创建渠道包,而且上线时间越长,推广渠道会越来越多,时有更新,同时可能还会有创建马甲包的需求。在实...
2019-05-22 10:40:45
2711
原创 Retrofit网络异常回调中拿到网络请求url等数据
前言开心原创哦Retrofit 与RxJava结合,异常 处理都走了onError(Throwable t) 方法. 在该异常回调中,我们拿不到网络请求url等数据,只能拿到Throwable对象。使用场景异常统一处理,但异常回调中无法区分哪一个接口网络请求出现异常了。例如一个界面有多个接口,其中某个接口请求出现异常了,在异常统一处理里面无法区分。(使用场景):界面A有 下拉刷...
2018-08-23 11:32:59
3425
1
原创 导入takephoto库编译失败 与glide库冲突 排除依赖
导入takephoto库编译失败 与glide库冲突当您的项目中导入了glide库, 同时也导入了takephoto库时, 出现编译失败. 编译报错指向于Glide库某文件原因: 这是因为takephoto库中本身依赖了三个库,其中一个库是照片墙的库multipleimageselect从github上打开该开的build.gradle可以看到该库又依赖
2017-05-22 13:51:22
5605
2
原创 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
4937
原创 Glide加载https图片
实现效果: glide加载https图片.另外,无论是否是动态图片, 都用 Glide.with(this).load(imageUrl).into(imageView);使用该API可以加载动态图.我并没有原创实现代码, 我和大家一样, 通过谷歌搜索后, 看到别人的帖子, 然后将原创作者的代码拷下来, 测试,解决问题, 再打包, 最后方便供给大家使用的.代码来源:htt
2017-05-12 10:19:09
2564
原创 gradle批量配置productFlavors(渠道)
应用场景:1. 将渠道中参数进行统一管理。 2.该项目需要生成三个不同包名应用, 包括应用图标, 分享图标, 启动页,应用名称,友盟后台key, 微信QQ微博,推送等KEY,渠道名,渠道号目的:统一管理,简洁代码,方便维护思路: 设置渠道时, 先不要在渠道内设置任何参数, 在渠道设置完成后, 拿到渠道的集合对象,遍历,通过渠道名来识别不同版本,然后设置不同的key,渠道号,
2017-04-07 15:26:09
2895
原创 提升gradle编译速度和gradle优化管理 在
一. 我们先说一下提升Gralde编译速度. 针对这个问题, 先讲一下配置相关设置提升编译速度. 我发现在build.gradle文件中如果设置了很多渠道, 在编译时会影响编译速度, 尤其是windows系统下运行。 对gradle中渠道进行优化, 可以提升编译速度1. 在user/.gradle文件下创建gradle.properties文件, 并在中写上org.gradle
2017-04-07 14:08:55
968
原创 阿里hotfix使用心得
到现在为止,已经出来了几个比较成熟的热修复框架,今天给大家分享一下阿里hotfix使用心得。针对几个热修复框架的比较,我就不再累述了,已经有专业文章来分析这一些了。阿里hotfix实现功能实现在线热修复,用户打开APP后就可实现自动拉取补丁包,并实现修复bug.可以说在用户不知道的情况下修复了问题。非常实用的一个框架。注意事项1.该框架不支持修复资源文件
2017-01-23 11:32:59
587
原创 LitePal使用遇到的坑
LitePal的使用看郭神的帖子就差不多了,简间易用,上手快。这是它的链接http://blog.youkuaiyun.com/guolin_blog/article/details/38461239我跟大家分享的是在使用中遇到的一些坑:1. android.database.sqlite.SQLiteException: Can't downgrade database from v
2017-01-23 11:15:15
18364
8
原创 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
1064
packer-ng-2.0.1_v3signig.jar
2019-05-24
360jiagu.jar
2019-05-23
手机屏幕同步工具asm.jar
2016-06-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人