自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

转载 这些Android内存管理知识你都知道吗

Android Runtime(ART)虚拟机和Dalvik虚拟机都使用分页(Paging)和内存映射(Memory-mapped file)来管理内存。这意味着应用修改的任何内存,无论修改的方式是分配新对象还是轻触内存映射的页面,都会一直驻留在RAM中,并且无法换出。要从应用中释放内存,只能释放应用保留的对象引用,使内存可供垃圾回收器回收。这种情况有一个例外:对于任何未被修改的内存映射文件(例如:代码),如果系统想要在其他位置使用其内存,可将其从RAM中换出。垃圾回收Android Runtime(A

2020-07-31 23:04:30 428 1

原创 如何使用 APK 分析器分析你的 APK

APK 分析器是 Android Studio 自带的一个 APK 分析工具,你可以使用它分析 APK 的组成详情。APK 分析器在我们开发当中最常见的使用场景是定位 APK 组成情况从而减小 APK 的大小。除此之外,还可以使用它减少调试应用的 DEX 文件和资源相关问题所用的时间。下面结合我的使用实践介绍一下 APK 分析器的功能和使用方法。一行配置导致 APK 变大 7 倍前不久,我开发新项目蓝牙音乐的过程中,编译 APK 完成后突然发现只有一个界面的蓝牙音乐 APK 包竟然有9M。吓得我直接打开

2020-07-29 20:51:01 1319 1

原创 Android图片框架对比

一、目的:对比现在主流图片框架的优势和缺点,在实际项目中如何选择适合自己的框架;主流框架Glide、Fresco、Picasso、ImageLoader共同优点:使用简单;可配置度高,自适应程度高;多级缓存;支持多种数据源;丰富的图片格式;支持多种Displayer(显示目标);简单对比二、基本概念在分析他们的差异、优缺点之前,我们先了解图片缓存通用的概念:RequestManager:请求生成和管理模块;Engine:引擎部分,负责创建任务(获取数据),并调度执行;Ge

2020-07-28 20:43:45 387

原创 Flutter配置生产环境、开发环境及Android apk编译打包

本文基于的 Gradle 版本为 5.6.2,Android Gradle 插件版本为 3.5.0,IDE 为 Android Studio4.0.1,Flutter 版本为 channel stable v1.17.5Android 开发过程中,我们习惯通过 productFlavors 来配置不同环境,比如网络 api urlproductFlavors { // 开发环境 env_dev { buildConfigField 'String', 'API_URL', '"ht.

2020-07-27 20:20:33 1449

原创 Android Studio上传项目到GitHub仓库

前言这部分主要写的是把android项目上传到github配置好的仓库里面1- 检查Git版本打开preferences -> Version Control -> GitWindows应该是:file -> setting -> Version Control -> Git点击test出现版本号。git一般都默认安装,如果没有就到官网下载安装,把它的启动路径选择上去:记得是:git安装路径/cmd/git.exe-2- 选择要上传的项目VCS -> I

2020-07-24 20:07:26 539

原创 Android中常用的adb或adb shell命令

一. adb命令简介:adb的全称为Android Debug Bridge,就是起到调试桥的作用,利用adb工具的前提是在手机上打开usb调试,然后通过数据线连接电脑。在电脑上使用命令模式来操作手机:重启、进入recovery、进入fastboot、推送文件功能等。今天就说下在测试过程中经常用到的adb命令查看电脑是否正确连接上了adb,连接成功后,可以看到Android设备的名称adb devices2.adb命令安装应用,安装后会有success或fail的提示,安装失败后可对应查看失败的原

2020-07-23 15:57:28 750

原创 Android高级学习之小程序中常用配置、API、事件

小程序中常用配置使用uni-app进行开发只需将原生wx换成uni即可下拉刷新:底部导航栏配置:1.监听用户下拉事件:onPullDownRefresh() {};下拉更新数据完毕时,需要调用API关闭刷新动画:wx.stopPullDownRefresh();2.动态获取屏幕高度:wx.getSystemInfoSync(),从中解构出高度:const { windowHeight } = wx.getSystemInfoSync();3.监听页面滚动事件:onPageScroll(){}

2020-07-22 21:03:06 130

原创 Android 自定义View Canvas绘制几何图形基础

项目需求:本项目中为自己的毕设项目,其中有一个模块需要通过APP进行码垛设计,并将码垛的结果发送给机械手的控制器。该模块的需求具体如下:可以从物料库中拖动项目的物料模块到码盘。用户将对应的图形模块在码盘上进行排列组合,APP将最终确定的组合的各图形的坐标进行保存可以增加码垛层数可以自定义生成不同大小的图形现有的Android组件无法满足这一需求,在Android中只能进行自定义View设计。于是展开了对自定义View的学习。自定义View的流程1.构造函数 View初始化

2020-07-21 21:55:00 426

翻译 四步通过Glide实现共享元素无缝转场效果

读完这篇文章, 你就会知道使用Glide等图片加载库实现共享元素转场效果,以及如何处理各种可能加载状态。通过共享转场动画,可以提升应用交互体验,让用户使用起来更愉悦。共享元素转场效果是Material Design的一个重要的转场效果. 如果图片资源是静态本地的,那么实现起来是容易的。但是通过网络下载图片并且创建一个无缝的动画效果就比较棘手了。开始之前此篇文章是在开发Toast App时,对于转场效果的一个总结. 该app是TOAST – Android 开发者聚会(波兰最大的Android开发者聚会

2020-07-20 20:17:32 674

转载 Flutter 自定义单选控件

在Flutter 应用开发中,经常会遇到各种单选效果,虽然官方提供了Radio组件,但是并不能满足我们实际的开发需求,所以往往还需要自定义控件才能满足平时的开发需求。下面就平时开发中用到的单选进行介绍:自定义SegmentBar对于分段组件大家肯定不会陌生,主要是实现多个分段,实现单选功能,效果如下图。话不多说,直接上代码:class SegmentBarView extends StatefulWidget { List<String> datas; Function(St

2020-07-17 21:40:47 1075 1

原创 Android Hilt实战初体验: Dagger替换成Hilt

在组件化AwesomeGithub项目中使用了Dagger来减少手动依赖注入代码。虽然它能自动化帮我们管理依赖项,但是写过之后的应该都会体会到它还是有点繁琐的。项目中到处充斥着Component,这让我想起了传统MVP模式的接口定义。简单来说就是费劲,有许多大量的类似定义。可能google也意识到这一点了,所以前不久发布出了Hilt。Hilt为了防止没听说过的小伙伴们一头雾水,首先我们来了解下Hilt是什么?Hilt是Android的依赖注入库,可减少在项目中执行手动依赖项注入的样板代码。Hilt

2020-07-16 21:11:48 2392

原创 Ktx:简化Android开发的Kotlin库

JCenterandroidimplementation 'com.ayvytr:ktx:3.0.0'androidximplementation 'com.ayvytr:ktx-androidx:3.0.0'ChangeLog3.0.0增加View.onClick扩展方法:防止重复点击,或者响应多次点击事件增加EditText.textChange扩展方法,afterTextChange后间隔一段时间后执行action,可设置text为空时是否触发action,延迟搜索的场景特别有用。

2020-07-15 15:29:21 386

原创 Android 夜间模式的三种实现

实现夜间模式有很多种方式,经过多次尝试,算是找到了一种性价比较高的方式。主题方式这是最正统的方式,但工作量巨大,因为要全局替换 xml 布局中所有硬编码的色值,将其换成主题色。然后通过换主题达到换肤的效果。窗口方式是不是可以在所有界面上罩一个半透明的窗口,就好像戴墨镜看屏幕一样。虽然这是换肤方案的“退而求其次”,但也是能达到不刺眼的效果:open class BaseActivity : AppCompatActivity() { // 展示全局半透明浮窗 private fun

2020-07-14 15:47:45 1089 1

原创 Jetpack Hilt 依赖注入框架上手指南

前言依赖注入是什么个人理解:吧有依赖关系的类放在容器中,解析这些类的实例,并在运行时注入到对应的字段中,就是依赖注入,目的是为了类的解耦例子:A 类 中用到了 B 类,一般情况下需要在 A 类中 new B() 的实例对象采用依赖注入后,在 A 类中 定义一个私有的 B 类 字段。并在运行的时候通过从相关的容器中获取出来 B 的对象并注入到 A 类中的 字段中。这样做的好处是什么?如果有很多个类需要使用 B 类。难道都要在各自的类中进行 new B() 吗。这样对后期的维护和管理都是不方便的。使

2020-07-13 21:01:35 440 1

原创 Android开发环境搭建

1. 安装JDK,配置环境变量1.1 下载JDK在官网下载JDK https://www.oracle.com/java/technologies/javase-downloads.html1.2 安装JDK双击运行jdk-14.0.1_windows-x64_bin.exe,按照提示安装JDK,指定安装路径(如:D:\myTools\JDK\jdk14),几分钟后便可安装完毕。1.3 配置环境变量配置完环境变量后,在cmd窗口中输入java,显示如下,则JDK安装成功:

2020-07-11 16:00:05 413

原创 快速反编译APK

准备工作,工具下载配置反编译会使用到的工具有apktool、dex2jar、jd-gui.现在开始下载安装和配置apktool配置1.右键保存链接为apktool wrapper script2.apktool.jar下载地址 打开可以看到历史版本列表,可以选择最新版本的,此教程使用的版本为:2.1.1. 下载成功重命名为apktool.jar.3.将apktool.jar和apktool拷贝到/usr/local/bin(需要root权限)4.修改这两个文件的权限: chmod + x5.

2020-07-09 16:07:13 406

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除