
Android
垚石
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用Android Studio编译so库
编写so库的步骤,网上写的很好,记录一下原创 2022-06-08 20:25:38 · 1004 阅读 · 1 评论 -
一个TextView显示2中颜色(动态变色)
之前写了一次静态的颜色,这次加上动画效果。先上效果:自定义view:GradientColorDynamicTextViewimport android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.util.Attr..原创 2021-10-08 16:57:07 · 408 阅读 · 0 评论 -
一个TextView显示2中颜色
继续自定义view的练习。这个我分为2次写博客。这是第一次,先写静态的显示,下一次,再写动态改变的。先看效果图然后直接上代码import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import androi.原创 2021-08-10 18:37:24 · 208 阅读 · 0 评论 -
android在drawText时候,计算baseline
Paint类的内部类FontMetrics类,有5个属性:注意:没有baseline属性。如何计算:2种方式计算中线到bottom的距离:(ascent+descent)/2 = descent+中线到baseline的距离公式推导:中线到baseline的距离 =(ascent+descent) / 2 -descent由于ascent是负值,所以:中线到baseline的距离 =(descent - ascent) / 2 -descentint...原创 2021-08-06 18:17:21 · 740 阅读 · 0 评论 -
android的app安全方面的处理
android的app安全方面的处理,分为4大方面:1、手机系统检测系统是否被root是否是模拟器2、用户展现自定义键盘(银行用的多)禁止截屏(敏感数据)3、对内代码数据库加密(sqlite加密)混淆(代码)组件暴露(export=false)4、http加密(对称,非对称)...原创 2021-07-09 16:22:45 · 341 阅读 · 0 评论 -
自定义view(一):有动画效果的计步器
开始练习基础:自定义view,丢掉自己眼高手低的毛病。自定义view:StepTextViewimport android.animation.ObjectAnimator;import android.animation.ValueAnimator;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.gr原创 2021-07-06 19:25:42 · 211 阅读 · 2 评论 -
android项目的架构
android项目整体框架分层:借鉴android系统的分层思想,每个层次都有独立的功能。原创 2021-06-16 17:53:17 · 241 阅读 · 2 评论 -
android基础知识
1、什么是分辨率?屏幕的分辨率:指的是设备横向和竖向屏幕的像素点的个数。现在市场上的手机的大部分的分辨率为720P(1280*720像素),1080P(1920*1080像素),2K(2560*1440像素)。2、dip dp sp px 分别代表什么意思?px:像素。1px代表屏幕上一个物理的像素点。但是px单位不建议使用,因为同样大小的图片在不同的手机上显示可能不同。dp和dip...原创 2021-06-16 17:51:07 · 111 阅读 · 0 评论 -
根据系统签名生成一个单独的签名文件jks
1) 生成platform.pem文件openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem(2) 生成platform.p12文件,设置别名和密码,即AS打包APK时输入的别名和密码openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:123456 -name key0.原创 2021-04-20 17:17:34 · 309 阅读 · 0 评论 -
ui给的sp如何适配放进Paint.setTextSize中?
TextView.setTextSize是以sp为单位的Paint.setTextSize()是以像素(px)为单位的假设ui出的尺寸是按照1080*1920的标准出的字体大小是20sp获取用户设备的宽高、分别除以标准的宽高,得到比例值w、h取其中小的值,比如是1.2然后用1.2*20得到24sp24sp再转换为px设置给paint,进行draw...原创 2021-03-25 18:02:10 · 363 阅读 · 0 评论 -
android 获取系统的ram和rom,以及可用的
亲测可用!!!!//运行内存public String getTotalRam(){//GB String path = "/proc/meminfo"; String firstLine = null; int totalRam = 0 ; try{ FileReader fileReader = new FileReader(path); BufferedReader br = new BufferedReader(fileRea.原创 2021-03-22 13:55:29 · 1759 阅读 · 0 评论 -
java.io.IOException: proguard.ParseException: Unknown option ‘-if‘ in line 16 of file ‘/Users/dugaol
android项目打包,gradle aR报错:java.io.IOException: proguard.ParseException: Unknown option '-if' in line 16 of file '/Users/xxx/.gradle/caches/transforms-2/files-2.1/daf63c57ae9cde0cfde446d2336b3891/proguard.txt'修改方法:将api 'androidx.appcompat:appcompa原创 2020-12-07 13:59:12 · 636 阅读 · 0 评论 -
as生成key时候,JKS 密钥库使用专用格式
androidstudio在生成签名文件时候,使用create新的签名时候,在提示这个错误:解决办法:用命令行生成签名文件:keytool -genkey -alias testalias -keypass 123456 -keyalg RSA -keysize 2048 -validity 36500 -keystore E:\androidstudio\androidstudio_work\CommonDemo\app\test.keystore -storepass 123456.原创 2020-10-26 13:52:02 · 1243 阅读 · 1 评论 -
scrcpy——Android投屏神器(使用教程)
有时候上班的时候,不想动手机,就把手机投屏到电脑上,scrcpy可以完全控制电脑。教程链接我复制过来,就不重复写了。https://blog.youkuaiyun.com/jinshitou2012/article/list/3转载 2020-09-23 11:04:34 · 616 阅读 · 0 评论 -
TextView文字宽度自适应
android开发中,有个需求:TextView中显示一句话,必须显示在一行。为了适配不同屏幕大小,我们的TextView中的字体不能直接设置textsize,这个时候,就需要自适应宽度了。其实只需要在xml中配置3行代码: android:layout_width="match_parent".... android:autoSizeTextType="uniform" android:maxLines="1"....就可以自适应宽度了。...原创 2020-09-16 17:46:57 · 2410 阅读 · 0 评论 -
关于手机的各种mac地址
android开发经常用到mac地址1、wifi路由器的mac 地址:WifiInfo这个对象可以通过WifiManager.getConnectionInfo()来获取。WifiInfo中包含了当前连接中的相关信息。getBSSID() 获取BSSID属性 也就是路由器的mac2、手机连接wifi时候,手机的mac地址:手机里的MAC其实是特指Wi-Fi无线网卡的MAC地址。3、手机的mac地址,一般就是指上面2中的无线网卡的mac地址。4、蓝牙地址备注:(小米手机).原创 2020-08-06 15:04:49 · 6847 阅读 · 0 评论 -
jam、dvm、art区别
不同:1、dvm执行的是dex文件,jvm执行的是class文件。2、dvm是基于寄存器,jvm基于内存栈堆。原创 2020-06-11 18:15:24 · 268 阅读 · 0 评论 -
ARouter原理 记录用
Android中的组件化,组件化中两个单向依赖的module之间需要互相启动对方的Activity,因为没有相互引用,startActivity()是实现不了的,必须需要一个协定的通信方式,此时类似ARouter和ActivityRouter等的路由框架就派上用场了。activity之间的跳转4种方式:显式,隐式,反射,包名+activity名ARouter底层用的下面的方式跳转:public Intent(Context packageContext, Class<?> cls)原创 2020-06-08 17:38:28 · 159 阅读 · 0 评论 -
android绘制一个动态时钟的view
android绘制一个动态时钟的view。项目中需要在240x240分辨率的设备上,开发一个时钟。注意几点:1、canvas.save();和canvas.restore(); 成对出现。1、钟表的心,最后画,样子好看。import android.content.Context;import android.graphics.Canvas;import android...原创 2020-04-21 17:33:20 · 537 阅读 · 1 评论 -
Android工程师,如何简单高效的学会smali语法
Q1:Smali是什么。Smali是一种宽松式的Jasmin/dedexer语法.简单来说就是我们用java写的代码编译成class打包成dex文件后使用baksmali程序逆向回来的一种语法。Q2:为什么要学习Smali。首先,提到smali就不得不说逆向。早在还没有android之前,各大平台和语言上就有对应的逆向一说。那么到目前为止,逆向一个apk通常是安全工程师(逆...翻译 2020-03-06 16:27:26 · 439 阅读 · 0 评论 -
android修改assets下的Properties不生效
项目中遇到修改Properties中的url,使用网上的方法,没有生效。我自己研究明白了,mark一下。首先,我们知道获取Properties的值,有2中方法:方法一: property.load(context.getAssets().open("zhihui.properties"));方法二: properties.load(context.openFileIn...原创 2020-02-18 16:10:10 · 1998 阅读 · 3 评论 -
autojs自动阅读脚本源代码免费分享
autojs上一篇文章讲过了,这篇来实践一下。一、工具下载安装手机端:auto.js(百度即可)PC端:VS CodeJDK SDK Tools(定位工具: Uiautomatorviewer)注:VS Code 用于代码编写 Uiautomatorviewer用于元素定位,也就是APP的界面分析下载地址:VS code:https://code.vis...原创 2020-02-17 14:36:43 · 15311 阅读 · 4 评论 -
Android 如何获取应用签名,微信需要的签名是MD5还是SHA1?
Android 获取应用签名在开发中我们可能经常需要用到一些第三方公司的SDK,比如:百度地图SDK、腾讯的分享朋友圈的SDk等,我们使用这些SDK有个前提就是我们需要将我们应用的签名和包名添加进去,跟我们在这些第三方SDK公司网站里创建的应用联系起来(我们需要在里面填写我们的应用签名)注意:微信需要的签名是MD5还是SHA1 ?答:MD5(用下面方法三的微信提供的apk,获取一下你自...原创 2020-02-16 17:24:19 · 8507 阅读 · 0 评论 -
Auto.JS简介与教程
什么是Auto.JS?Auto.JS是Android平台上的JavaScript自动化工具。它的本质是可执行自己编写的简易Javascript脚本的,尤其可以在开启“无障碍模式”的情况下对其他App进行一些操作的一个Android App,便于进行自动化操作。学习成本非常低。Auto.JS已被黑产广泛使用,以至于作者关闭了官方下载通道。官网:https://github.com/h...原创 2020-02-16 13:57:02 · 10143 阅读 · 3 评论 -
System APP 与普通 APP 不同点
在 Android 系统里,有两种类型的 App 存在:一种是系统级 App ,比如打电话,发短信,拍照等等,这些 App 最明显的特点就是 普通方法不可以卸载。另一种是普通 App ,用户从应用市场上下载主动安装的 App ,这样的 APP 可以卸载。系统 App 和普通 App 还有很多其他重要的区别,主要体现在一下几个方面:1、广播接受权限什么是广播接受权限?简单来说,在 ...原创 2020-01-15 17:25:55 · 3149 阅读 · 0 评论 -
多线程学习
1、源于joinjava多线程编程join的作用是等待线程结束,这个作用可以产生很多特定的场景。1)A线程中调用B线程的join方法,那么A线程需要等待B线程执行完成后才能完成2)主线程中依次调用A线程的join方法,B线程的join方法,可以保证A,B线程顺序执行;public class Server { static TestrunnableB testrunn...原创 2020-01-15 11:13:20 · 156 阅读 · 0 评论 -
android 项目中应该添加哪几种so文件夹?abi这个设置?
最近感觉项目apk包太大,已经快50M了,需要减小。目标瞄准了so文件。现在包含了三种类型的so。那么应该留哪个?去掉哪个呢?看一位大佬的文章:https://blog.youkuaiyun.com/ouyang_peng/article/details/51168072。当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。在x86设备上,libs/x86目录中如果存在...原创 2019-12-02 12:00:36 · 465 阅读 · 0 评论 -
WebView中Http和Https混合问题
项目中使用到了WebView,但是网页中的图片加载不出来。将图片地址单独webview中访问图片是可以的。开始怀疑是setting设置的问题,然后把这个配置都设置了一下,还是不行。网上的大神提供了愿意:从Android5.0开始,WebView默认不支持同时加载Https和Http混合模式。如何解决呢:if(Build.VERSION.SDK_INT>=Build.VERSION_CODES...原创 2018-05-14 11:36:45 · 4711 阅读 · 1 评论 -
java泛型类的理解与使用
什么是泛型类?类似于我们经常使用JDK中的ArrayList<String> list = new ArrayList<String>();就使用的是泛型类,来看看java源码:public class ArrayList<E> extends AbstractList<E> implements List<E>, Ran...原创 2018-05-08 11:54:20 · 349 阅读 · 0 评论 -
高德地图中,计算距离米和经纬度之间的转换
项目的需求中,有一个设置围栏的功能。高德地图的设置围栏,有2种类型,圆形和多边形。多边形已经实现地图自动缩放。但是绘制圆形有问题,不能自动缩放,用户看到的圆形可能很小,或者很大。我要讲解的是绘制圆形的自动缩放。高德地图中的demo是不能自适应屏幕的,如上图所示。我的思路是根据圆心的经纬度,和半径,计算出圆的上下左右的点的经纬度,然后调用多边形的缩放的接口方法。说说代码的...原创 2018-08-03 14:48:43 · 13293 阅读 · 0 评论 -
布局优化
1、include:嵌套其他布局2、merge:和include配合使用,是include的扩展,可以减少一层布局。merge标签可以没有width和height属性,其属性有父布局决定。3、viewStub:此标签下的布局,系统默认不加载。只有在代码设置显示时,才加载。注意和View.GONE比较,GONE的布局还是需要加载出来的,只是没有显示出来。viewStub是压根就没有加载。...原创 2018-11-30 16:06:06 · 137 阅读 · 0 评论 -
Android6.0权限和targetSdkVersion之间的关系
targetSDKVersion简单来说就代表着你的App能够适配的系统版本,意味着你的App在这个版本的手机上做了充分的 前向 兼容性处理和实际测试。其实我们写代码时都是经常干这么一件事,就是 if(Build.VERSION.SDK_INT >= 23) { ... } ,这就是兼容性处理最典型的一个例子。如果你的target设置得越高,其实调用系统提供的API时,所得到的处理也是不一样...转载 2017-11-02 17:09:02 · 2614 阅读 · 0 评论 -
Android网络编程(1)
最近自己在学习Android的网络编程,想自己手动写demo,能够增加最基础底层的理解。 先说下我准备练习的内容结构:1、HttpUrlConnection的get和post方式请求的接收数据。 2、HttpClient的get和post方式请求和接收数据。 3、OKHttp的get和post方式请求和接收处理数据。 4、服务器返回的xml、json类型数据的解析方式。 5、基于socke原创 2016-05-10 15:05:17 · 450 阅读 · 0 评论 -
java 动态代理
静态代理需要有3:接口,真实对象,代理对象。动态代理需要有2:接口,真实对象。代理对象怎么办呢?new一个。API中已经为我们提供了一个静态的方法:此方法可以直接使用。来看例子:真实对象:接口:使用方法:这样,动态代理就可以使用了。欢迎关注我的微信公众号:...原创 2018-05-04 18:21:04 · 186 阅读 · 0 评论 -
FragmentPageAdapter和FragmentStatePageAdapter的区别
使用FragmentPageAdapter适配器的时候,他会持久化数据,即时Fragment被系统销毁,数据也会保存在内存中,所有它不能用来加载大数据量的数据。使用FragmentStatePageAdapter适配器的时候,他会销毁Fragment仅仅保存Fragment的引用,适合加载大数据量的数据。 public class MyFragmentPageAdapter extends Fra...原创 2018-05-02 18:23:41 · 1151 阅读 · 0 评论 -
java通配符
java通配符怎么表示?答:<?> 在<>中写?就表示通配符。什么是java通配符?通配符:通配任意一种泛型类型。它是在泛型的基础上存在的。通配符的优点:是方法更加通用。什么时候用通配符?在定义属性或者定义方法的时候。并不是在实例化属性的时候。...原创 2018-05-09 14:08:46 · 998 阅读 · 0 评论 -
发送,取消notification,打开,关闭闪光灯。
Notification d的应用import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android....原创 2016-07-05 14:45:25 · 1405 阅读 · 0 评论 -
ImageView 设置图片的方法
ImageView 设置图片的方法原创 2016-06-17 15:36:22 · 956 阅读 · 0 评论 -
GridView的常用属性
用GridView时候,经常设置属性,记录以防忘记。1.android:numColumns=”auto_fit” //GridView的列数设置为自动,也可填数字2.android:columnWidth=”90dp " //每列的宽度,也就是Item的宽度3.android:stretchMode=”columnWidth"//item的缩放与列宽大小同步,原创 2016-06-16 11:27:17 · 418 阅读 · 0 评论 -
理解ImageLoader的原理
最近要自己手动写一个demo,理解下ImageLoader的原理。怎么解决oom的问题。原创 2016-06-16 10:49:27 · 341 阅读 · 0 评论