
android
CAir2
这个作者很懒,什么都没留下…
展开
-
android 定时器
Android定时器实现原创 2022-12-23 14:57:53 · 1106 阅读 · 0 评论 -
android TV 工程创建
androidTV工程基本创建原创 2022-12-22 10:35:48 · 975 阅读 · 0 评论 -
meta-data 占位符的引用
meta-data 占位符引用原创 2022-05-10 15:12:10 · 551 阅读 · 0 评论 -
webView基本使用
webview的基本使用原创 2022-01-10 16:01:44 · 1522 阅读 · 0 评论 -
android unzip 解压库合集
android 自带的zip:解压效率很高,但是压缩文件不能超过2G,否则会解压失败apache ant.zip 解压包参考:http://www.manongjc.com/detail/22-xicvonaxveegetv.html使用简单,解压效率一般(xapk解压的时候和系统zip比起来会慢很多)AndroidUn7zip 第三方库具体效率没测试,但是解压部分xapk的压缩格式会失败推荐 zip4j 第三方库和antzip解压对比效率高一点(3.7G的xap原创 2021-11-26 10:35:37 · 2160 阅读 · 0 评论 -
android相册读取和展示
参考文献:缩略图ThumbnailUtils缩略图和原图本文目的:读取相册获取缩略图和原图,至于怎么在UI中呈现,本文不做讲解。读取相册需要动态获取权限Manifest.permission.READ_EXTERNAL_STORAGE,使用EasyPermissions便可解决读取相册列表ContentResolver,读取内容包括:标题,地址,名称,大小,以及对应的id,至于更多类容可以参考projection的字段,例如分类的BUCKET_ID String[] projecti原创 2021-05-21 16:30:52 · 1564 阅读 · 0 评论 -
Android模拟器 使用 Fiddler抓包
使用Fiddler代理抓取夜神模拟器数据包1. 设置Fiddler代理(Allow remote computers to connect 必须勾选否则模拟器链接不上)1.Tools-Fiddler->Connections2.设置代理端口,默认8888,勾选Allow remote computers to connect3.设置好之后重启Fiddler2. 设置夜神模拟器代理设置->WLAN 选中链接的wifi,长按左键,然后修改网络此时我们就可以通过Fiddler抓包原创 2021-04-22 18:51:42 · 827 阅读 · 0 评论 -
Android 监听app的变化(安装,卸载,更新)
Android app的变化可以通过广播监听。广播监听方式分为两种(kotlin)方式一:动态注册广播服务registerReceiver//action 表示监听动作,如果是有序广播则需要设置priority 优先级var filter = IntentFilter()//filter.priority = 100filter.addAction("com.unity3d.testkotlin.MyBroadcastRecver")//filter.addDataScheme("package原创 2021-04-21 15:21:10 · 4364 阅读 · 1 评论 -
自定义控件
android 自定义控件分为两种:通过view或者viewGroup重新onMeasure和onDraw实现指定UI的控件通过包装xml布局文件实现特定功能的UI控件由于方式一涉及知识点比较多,我们这里主要讲解方式二,通过包装布局文件来实现指定UI控件。主要思路:通过继承ViewGroup加载xml文件在继承的类里面实现特定功能封装按照一般控件使用即可(可以自定义属性)下面我们以封装一个带有返回按钮的导航头:布局文件:<?xml version="1.0" encodi原创 2021-04-14 16:46:25 · 160 阅读 · 0 评论 -
Android 搭建Http服务
引入库:NanoHTTPDimplementation'org.nanohttpd:nanohttpd:2.2.0'添加网络访问权限<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />demo的实现public class HttpServer ext原创 2021-03-02 21:48:48 · 1244 阅读 · 0 评论 -
中文转拼音
参考博客:Android 模糊搜索拼音的模糊搜索主要难度在于中文转拼音,下面是源码package com.stnts.rocket.util;import java.util.ArrayList;import java.util.List;public class PinyinUtil { private static int[] sPinYinValue = new int[]{-20319, -20317, -20304,转载 2021-01-15 16:30:34 · 391 阅读 · 1 评论 -
ViewModel
ViewModel用于Activity和Fragment之间传递数据。通常用法: MyDataModel model = new ViewModelProvider(getViewModelStore(),new MyDataModelFactory()).get(MyDataModel.class);getViewModelStore,由Activity提供,同一个ViewModelStore获取同一个MyDataModel返回的是同一个实例,因为ViewModelStore会根据键值对存储当前Vi原创 2020-10-14 16:09:07 · 246 阅读 · 0 评论 -
OkHttp设置超时时间
在使用okHttp的时候我们经常会使用超时设置:如下:okHttpClient = new OkHttpClient.Builder() .connectTimeout(5, TimeUnit.SECONDS) .writeTimeout(5, TimeUnit.SECONDS) .readTimeout(5, TimeUnit.SECONDS) .dns(new xDns(5)原创 2020-09-27 15:56:18 · 5588 阅读 · 0 评论 -
Activity 设置默认背景
有时候我们想为所有Activity设置默认的背景,当然如果不怕麻烦我们可以通过手动设置android:background,但是如果想更改的话,那么这个工作量可能…下面将介绍一个更好的方法:1. 创建一个thme,在theme里面指定背景 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> &l原创 2020-09-21 11:16:51 · 1886 阅读 · 1 评论 -
微信支付 -1
微信支付参考:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5但是在实际过程中我们可能会遇见错误 -1,主要可能是一下几个原因:APP_ID 不一致:登录微信开放平台,查看应用的AppId。应用签名不一致:登录微信开放平台,修改签名,和当前应用保持一致。注意由于微信会缓存应用签名等一些信息,所以修改之后还是调用失败,返回-1,此时清理微信缓存或者卸载重装微信即可. //Globals.APP_ID,当前应用的appi原创 2020-09-16 10:09:34 · 266 阅读 · 0 评论 -
RxJava 和 RxAndroid
RxJava 和 RxAndroid 一 (基础)转载 2020-08-31 10:55:14 · 256 阅读 · 0 评论 -
gradle使用变量技巧
参考博客:https://blog.youkuaiyun.com/u012982629/article/details/81121717rootProject.extapp:build.gradle 文件内容:引用rootProject.ext.android { //这里应用的是根目录下的build.gradle中的ext{}的内容 compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { m原创 2020-08-13 11:57:29 · 1155 阅读 · 0 评论 -
Theme.MaterialComponents.xxx not found
implementation 'com.google.android.material:material:1.1.0-alpha06' 问题解决原创 2020-08-10 16:47:58 · 1220 阅读 · 1 评论 -
adb 查看当前交互的Activity
adb环境配置adb是android sdk的一个工具,如果想在cmd使用的话,需要将adb.exe加入到环境变量如果不想加入环境变量,可以直接在android studio 的Terminal使用。放了防止平台差异性,建议进入adb shell之后再使用adb命令adb查看当前交互的Activity方法一 :adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'方法二:a原创 2020-06-10 10:39:13 · 354 阅读 · 0 评论 -
adb logcat 查看日志命令行用法
以下内容为了规避平台的差异性都是进入adb shell之后的操作。1. 查看logcat 帮助信息logcat -h命令选项解析:”-s”选项 : 设置输出日志的标签, 只显示该标签的日志;”-f”选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;”-r”选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;”-n”选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样原创 2020-06-10 11:36:33 · 2920 阅读 · 0 评论 -
Android内存泄露之非静态内部类|匿名内部类
原文:https://blog.youkuaiyun.com/u012982629/article/details/82770282知识点:非静态内部类|匿名内部类 默认持有外部类的引用什么是内存泄露?Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不被任何引用所指向,则该对象会在被GC发现的时候被回收;另外,如果一组对象中只包含互相的引用,而没有来自它们外部的引用(例如有两个对象A和B互相转载 2020-06-17 15:31:02 · 412 阅读 · 1 评论 -
ContentProvider 原理和应用
参考博客:https://blog.youkuaiyun.com/carson_ho/article/details/76101093,很好很详细的一篇文章转载 2020-06-16 16:45:02 · 297 阅读 · 0 评论 -
android访问相册、拍照
在访问相册的时候由于是跨进程访问相册资源,所以必须具备ContentProvider的基本知识,使用相机的时候需要指定照片存储位置,需要具备FileProvider的原理和使用由于访问相册和使用相机,所以我们需要动态申请权限。使用easypermissionsimplementation 'pub.devrel:easypermissions:0.3.0'所需权限<uses-permission android:name="android.permission.READ_EXTERNAL_S原创 2020-06-16 16:41:16 · 3645 阅读 · 1 评论 -
FileProvider的原理和使用
为什么需要使用FileProvider ?为了提高私有目录的安全性,防止应用信息的泄漏,从 Android 7.0 开始,应用私有目录的访问权限被做限制。具体表现为,开发人员不能够再简单地通过 file:// URI 访问其他应用的私有目录文件或者让其他应用访问自己的私有目录文件。同时,也是从 7.0 开始,Android SDK 中的 StrictMode 策略禁止开发人员在应用外部公开 file:// URI。具体表现为,当我们在应用中使用包含 file:// URI 的 Intent 离开自己的原创 2020-06-16 15:15:23 · 6166 阅读 · 0 评论 -
Glide 4.x 基本使用
对与ImageView的scaleType 非Matrix的居中显示就不讲解了,因为很简单。这里主要实现android:scaleType="matrix"样式的自适应。原理:先获取原画的大小,然后获取当前Image的布局尺寸(需要是match_parent才行),之后计算缩放比。在使用该方法之前尝试过RequestOptions的override方法,逻辑是在onResourceReady里面获取到缩放比,之后计算出缩放之后的高度和宽度并设置override。结果程序会报错,因为onResource原创 2020-06-12 15:21:56 · 1009 阅读 · 1 评论 -
ImageView 实现缩放,平移,Fling
主要使用了一下知识点:Matrix:矩阵变换(缩放,平移)ScaleGestureDetector:缩放手势检测GestureDetector:手势检测- ImageView 缩放功能缩放实现重写://如果返回true,则会重置detector对放大比例的计算。默认为1.0//如果返回false,则持续计算放大比例public boolean onScale(ScaleGestureDetector detector);实现步骤:获取Image本身的缩放比例//因为是等比缩放,所原创 2020-06-12 15:03:14 · 1035 阅读 · 0 评论 -
android 目录结构 和 文件存储
系统目录结构:/system 系统目录,例如系统软件,字体,媒体,属性等基本信息/data/data 目录,,这里包含了app的数据、文件、数据库等信息,并且以包名的形式来区分各个应用。既然提到这个目录,我就补充一下。在这个目录下,找到自己项目的包名,然后出现以下的目录结构:-/data/data/package-name/database 下存放着项目的数据库文件(.db文件)。/data/data/package-name/database 下存放着项目的以SharedPrefren.原创 2020-06-10 16:26:08 · 1901 阅读 · 0 评论 -
Matrix 变换原理
转载原文:https://www.cnblogs.com/zhangming-blog/articles/5356073.htmlAndroid里面提供了对Matrix操作的一系列方便的接口。Matrix的操作,总共分为translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)四种,每一种变换在Android的API里都提供了set, post和pre三种操作方式,除了translate,其他三种操作都可以指定中心点。set是直接设置Matrix的值,每次set一次,整个Ma转载 2020-06-09 17:17:37 · 1217 阅读 · 0 评论 -
ImageView 的scaleType 属性图解
文章转载:https://www.jianshu.com/p/32e335d5b842ImageView 是 Android 中最常用的控件之一,而在使用ImageView时,必不可少的会使用到它的scaleType属性。该属性指定了你想让ImageView如何显示图片,包括是否进行缩放、等比缩放、缩放后展示位置等。Android 提供了八种scaleType的属性值,每种都对应了一种展示方式,下面就对每一种scaleType属性值进行图文解释。首先,这个是测试放到ImageView中的图从左到右依次有转载 2020-06-09 16:59:34 · 592 阅读 · 0 评论 -
SmartRefreshLayout 上下拉刷新框架
SmartRefreshLayout的目标是打造一个强大,稳定,成熟的下拉刷新框架,并集成各种的炫酷、多样、实用、美观的Header和Footer。 正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支持多层嵌套的视图结构。 它继承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了现在流行的各种刷新布局的优点,包括谷歌官方的 SwipeRefreshLayout, 其他原创 2020-06-09 10:19:42 · 838 阅读 · 0 评论 -
android 真机调试
Android Studio 的设置Android Studio 版本 3.5.File - Settings - Appearce & Behavior - System Settings - Android SDK 设置页面:SDK Platforms 选择对应的系统版本进行安装。例如,我当前的为 Android 9.0.SDK Tools 选择 Google USB Driver 进行安装。都安装之后,如何调试窗口下拉列表中还是没有出现华为手机,点击 “Troubleshoot原创 2020-06-02 12:13:26 · 375 阅读 · 0 评论 -
Android Studio 自定义Module
自定义library Module1.File ->New-> New Module,选择 Android Library,自定义module名称,eg:myview2.在当前 app 的 build.gradle 中 dependencies{} 中添加 implementation project(':myview')Tips: :myview 中的 : 代表的与 app 同级目录下的 Module导入已经存在的library Module1.File ->New->原创 2020-06-01 16:00:12 · 693 阅读 · 0 评论 -
android 自定义属性
自定义之前我们首先了解一下,view的构造函数,因为自定义属性往往在子类中获取并使用。/** * Code中创建View时使用的构造方法 * Simple constructor to use when creating a view from code. */View(Context context)/** * 绘制Xml中View时使用的构造方法 * Constructor that is called when inflating a view from XML. */原创 2020-06-01 12:10:38 · 374 阅读 · 0 评论 -
DialogPreference 踩坑详解
在学习这个之前,首先我们应该搞懂什么是Preferences以及AlertDialog的详细使用。懂的了这些之后我们在看看什么是DialogPreference ,以及和他相关的ListPreference,MultiSelectListPreference。1.ListPreference顾名思义ListPreference就类似AlertDialog的setSingleChoiceItems功能,只是多了一项记忆功能。下面看一下主要代码@Override protected void on原创 2020-05-29 19:45:34 · 1589 阅读 · 0 评论 -
Activity、View、Window关系
1、为什么要设计Activity、View、Window?用一句话来联系他们之间的关系:Activity就像工匠,Window就像是窗户,View就像是窗花,LayoutInflater像剪刀,Xml配置像窗花图纸。Android根据他们不同的职能让他们各斯其活,同时也相互配合展示给我们灵活、精致的界面。一张图理清所有层级关系:好了,接下来一步一步的分析,首先从大家最熟悉的Activity开始:我们的工匠大神Activity一个应用程序里所有的界面展示都来自于Activity,那Acti转载 2020-05-29 19:02:42 · 813 阅读 · 1 评论 -
android 窗口圆角
网上关于此类的话题很多,特别是Dialog显示圆角问题。下面首先给出两个结论:1.所有的View都是矩形的,即使设置了圆角依旧显示矩形(window非透明背景便于用户观察)2.圆角是针对Window的,并非View3.圆角实现方法即:dialog.getWindow().setBackgroundDrawableResource()所以当我们为非透明window的View设置圆角的时候会出现如下问题(结论1):所以既然圆角是针对window的,那么我们把View的圆角背景去掉,直接设置windo原创 2020-05-29 16:09:36 · 1651 阅读 · 0 评论 -
SharedPreferences 存储数据
Sharedpreference是一个轻量级的以kv形式存储的数据结构。存储文件以xml的形式存在,位置位于安装目录/shared_prefs/。1.获取默认的Sharedpreference在android 29 之前我们可以通过getDefaultSharedPreferences获取PreferenceManager.getDefaultSharedPreferences通过源码发现其内部是通过getSharedPreferences实现的,只是名称是getDefaultSharedPref原创 2020-05-29 11:33:35 · 525 阅读 · 0 评论 -
Android Studio打包apk
普通的apk打包Build->Generate Signed Bundle/APK如果已经拥有apk密钥,则选择已经存在的密钥,然后输入密码信息即可,否则创建密钥Create new…。记得好好保管密钥文件和密码额。以上设置好了就点击Next,此时查看Event Log窗口,查看输出信息,点击locate可以跳转到apk文件位置。分渠道打包不错,我们需要用到分渠道打包,那么我们需要解决两个问题怎么区分各个平台的标识怎么每次版本更新都生成几十个包、几百个包第一.原创 2020-05-28 11:56:12 · 19443 阅读 · 3 评论 -
android8.0以上自动更新apk未弹出安装界面的解决办法
1.为什么没有弹出安装界面?android8.0添加了新的安全措施,不允许应用内安装未经过Google play验证的应用所以在自动更新之前我们应该判断一下是否拥有安装未知应用的权限清单文件中添加权限<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> 检测是否拥有安装未知应用权限canRequestPackageInstalls@RequiresApi(api = B原创 2020-05-27 19:22:39 · 2456 阅读 · 0 评论 -
android studio 模拟器文件管理器
Android Studio3.2以上版本模拟器文件目录正解工具栏View->Tool Windows->Device File Explorer前提是先打开模拟器的文件管理器了原创 2020-05-27 17:07:16 · 2487 阅读 · 0 评论