Android应用技术
文章平均质量分 92
Android应用开发中,知识总结
bjxiaxueliang
这是一个以技术分享为主要内容的博客,致力于分享Android、OpenGL ES、Vulkan、移动端音视频等领域的技术文章和经验总结,希望能为广大技术爱好者和从业人士提供有价值的信息和思路。同时,我也会不定期地分享我对某些技术行业前景的分析和思考,希望能为朋友们带来一些启示和思路。
展开
-
Android Q(Android 10 API 29)适配指南——Scoped Storage in Android 10
从Android 10开始,即便应用请求了WRITE_EXTERNAL_STORAGE权限,其对全局外部存储的访问也受到限制,鼓励开发者采用Scoped Storage的新规范来保护用户隐私和数据安全。如果应用需要更广泛的访问权限,需要请求MANAGE_EXTERNAL_STORAGE权限来访问用户选择的文件和目录,由于此权限的强大访问能力,Google Play会对申请使用该权限的应用进行严格审查,确保应用的用途正当且必要。原创 2017-05-19 14:51:17 · 1679 阅读 · 0 评论 -
一文详解 Okio 输入输出流
Okio最初是作为OkHttp的一个组件出现,是 OkHttp 实现HTTP协议数据构建、解析中使用到的底层 IO 库。其相比于传统的 java.io 和 java.nio ,其在文件、网络等数据读写操作更加便捷、高效。原创 2023-07-14 09:53:20 · 611 阅读 · 0 评论 -
一文详解jitpack多渠道maven库发布
JitPack 是一 个构建与发布 Git 存储库的便捷服务,可用于在 GitHub、GitLab 上打包、发布与部署依赖库,便于使用者通过maven依赖的形式引用开发者发布的依赖库。原创 2023-02-21 22:33:35 · 850 阅读 · 0 评论 -
Android 13(API 33)新特性及适配指南
Android 13(API 33)于 2022年8月15日正式发布(发布时间较往年早了一些),正式版Release源代码也于当日被推送到AOSP Android开源项目。截止到笔者撰写这篇文章时,国内部分应用软件开发厂商已逐步接到手机厂商(华米OV等)的新版本适配要求。当前,对于Android应用开发者来说,Android 13 的软件兼容适配已需提上工作日程。原创 2022-10-24 15:39:34 · 11712 阅读 · 7 评论 -
Android 12(API 31)新特性及适配指南
Android 12(API 31)于2021年10月4日正式发布,正式版源代码也于当日被推送到AOSP Android开源项目。截止到笔者撰写这篇文章时,国内各终端厂商的在售Android设备,已经逐步开启了Android 12正式版本的更新。当前,对于Android应用开发者来说,Android 12 的软件兼容适配已迫在眉睫。原创 2022-03-19 22:08:09 · 15242 阅读 · 2 评论 -
Android 12(API 31)适配指南——SplashScreen
Android 12(API 31)引入了 SplashScreen 相关API,用于开发Android应用的启动页。SplashScreen相关API的引入影响在Andorid 12设备上运行的所有应用。若开发者未进行SplashScreen的适配工作,在应用冷启动和温启动时,可能会呈现两个启动页先后出现的情况(Android SplashScreen启动页 + Android应用自定义开发的启动页或引导页)。原创 2022-03-16 11:34:56 · 15333 阅读 · 2 评论 -
Android R(Android 11 API 30) 新特性分析及适配指南
Android R(Android 11 API 30)于2020年9月9日正式发布,随国内各终端厂商在售Android设备的版本更新升级,应用软件对Android R 版本的兼容适配已迫在眉睫。原创 2021-03-12 15:23:52 · 5537 阅读 · 1 评论 -
Android Q(Android 10 API 29)新特性及适配指南
在Android 10开始版本中,官方的改动较大,相应的开发者适配成本还是很高的。这里按照`2019.11.11 google android q workshop`流程,大概说明一下Android Q适配需要注意的内容。虽然是大概介绍,但应该是目前最全的适配攻略了...原创 2019-11-18 16:47:26 · 3325 阅读 · 1 评论 -
Android Q 深色主题
从Support Library 23.2.0 开始,AppCompat 新增了主题:`Theme.AppCompat.DayNight`。其允许APP在 `深色主题` 和 `亮色主题` 之间切换;可以大幅减少耗电量(`OLED显示屏`的设备上,`深色主题`较`亮色主题` 有更加持久的续航能力);改善弱视以及对强光敏感的用户的可视性;让所有人都可以在光线较暗的环境中更轻松地使用设备,从而提升用户体验。原创 2019-10-23 21:38:53 · 3574 阅读 · 3 评论 -
Android P(Android9 API 28)适配需要哪些代码更改
Android P(API 28)适配需要哪些代码更改最好的文档依据为:google官方文档:行为变更:以 API 级别 28+ 为目标的应用google官方文档:将应用迁移到 Android 9下面来介绍Android P(API 28)适配,我们的App 需要做哪些更改:1、targetSdkVersion 282、前台服务: 使用 Service 需添加普通权限 FOREGRO...原创 2019-05-24 12:51:21 · 5076 阅读 · 1 评论 -
一文详解 implementation api embed
最近使用 Android Studio 从事项目开发时,发现对 implementation、api、embed 的用法了解的不是很清楚,这里准备一篇文章对其使用场景或者说是使用方式进行一个总结。原创 2022-08-10 10:57:55 · 2339 阅读 · 0 评论 -
一文分析 Android现状及发展前景
Coding这些年,一直低头“搬砖”,好像从未仔细审视过Android的发展现状,亦未好好思考Android的发展前景。“低头干活,还要抬头看路”,写一篇文章简要审视一下Android的发展现状、展望一下Android的发展前景。Android 诞生背景Android 发展现状Android 前景趋势从Android的诞生背景开始说起,举例一些数据看一下Android当前的发展现状,最后结合数据看一下Android的未来发展。一、诞生背景2003年10月,Andy Rubin、Rich Mi原创 2021-11-17 19:11:57 · 14306 阅读 · 0 评论 -
一文详解 Interpolator动画插值器
Interpolator 被用来修饰动画效果,定义动画的变化率。 在Android源码中对应的接口类为 TimeInterpolator,通过输入均匀变化的0~1之间的值,可以得到匀速、正加速、负加速、无规则变加速等0~1之间的变化曲线。原创 2021-08-30 19:35:22 · 1232 阅读 · 0 评论 -
一文学会 使用Kotlin Coroutine协程
关于线程、协程两者的对比,可以简要叙述如下:线程:线程由操作系统调度,线程切换或线程阻塞由操作系统和CPU调度实现;协程:协程运行于操作系统的用户态,其依赖于线程来实现,通过用户态程序控制,尽量`减少或避免因线程阻塞造成的操作系统与CPU开销`。与线程相比不同点在于,`协程挂起时不需要阻塞其运行的线程`。`协成挂起`期间,其对应的`线程可以被分配其他协程任务来执行`,待`该协程任务挂起结束再次开始时,将该协成再次交由某个线程来继续执行`(挂起期间,`类似于将该协程任务添加到了某个任务队列中`)原创 2022-03-09 18:16:23 · 7043 阅读 · 0 评论 -
一文了解 APK瘦身属性android:extractNativeLibs
android:extractNativeLibs属性瘦身APK先描述一下结论:android:extractNativeLibs = true时,gradle打包时会对工程中的so库进行压缩,最终生成apk包的体积会减小。但用户在手机端进行apk安装时,系统会对压缩后的so库进行解压,从而造成用户安装apk的时间变长。关于android:extractNativeLibs默认值设定方面,若开发人员未对android:extractNativeLibs进行特殊配置:minSdkVersion &原创 2021-03-26 18:54:14 · 3250 阅读 · 4 评论 -
facebook Android平台上动态列表的内存优化(Memory optimization for feeds on Android)
facebook Android平台上动态列表的内存优化(Memory optimization for feeds on Android)英文原文地址Memory optimization for feeds on AndroidMillions of people use Facebook on Android devices every day, scrolling through News翻译 2017-05-25 16:28:50 · 1724 阅读 · 0 评论 -
一文总结 Android屏幕适配
这里所说的“屏幕适配”指的是:不同屏幕分辨率,不同物理尺寸的适配。如果屏幕分辨率相同,那么直接写死像素PX就OK了;如果物理尺寸相同,那么直接按照物理尺寸大小,写好dp就OK了;今天这里介绍的适配,为一种*妥协的适配方案*:存在一种或者几种最适的分辨率或者物理尺寸,其他分辨率或者物理尺寸的屏幕为次适应。原创 2017-05-20 08:17:27 · 1007 阅读 · 0 评论 -
Android M的设备,将mdpi中的图片放到hdpi中,显示会怎么样?
注:本人用的设备为联想Pad;型号:K—One;设备密度:M一、效果图(M设备中,分别将图片放在mdpi、hdpi、ldpi和xdpi的效果)1、M设备上,将图片放在mdpi中的显示效果 2、M设备上,将图片放在hdpi中的显示效果 3、M设备上,将图片放在ldpi中的显示效果 4、M设备上,将图片放在xdpi中的显示效果 二、布局文件如何写的?<RelativeLayout xmlns:a原创 2017-05-18 10:25:37 · 1572 阅读 · 0 评论 -
Android 6.0 动态权限
参考文档: https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-runtime-permissi原创 2017-05-10 18:39:48 · 435 阅读 · 0 评论 -
Android APP架构思考
从2011年到现在,做了几年的Android应用与Android平台上Opengl es应用开发,下面是关于Android APP开发架构的一些思考:构建框架的最终目的是增强项目代码的可读性 ,维护性 和方便测试 ,如果背离了这个初衷,为了使用而使用,最终是得不偿失的。从根本上来讲,要解决上述的三个问题,核心思想无非两种:一个是分层 ,一个是模块化 。两个方法最终要实现的就是解耦,分层讲的是纵向层面原创 2017-05-21 09:16:02 · 4202 阅读 · 2 评论 -
Android MVC MVP MVVM
原文地址: Android MVVM到底是啥?看完就明白了MVCMVC 我们都知道,模型——视图——控制器。 为了使得程序的各个部分分离降低耦合性,我们对代码的结构进行了划分。 他们的通信方式也如上图所示,即View层触发操作通知到业务层完成逻辑处理,业务层完成业务逻辑之后通知Model层更新数据,数据更新完之后通知View层展现。在实际运用中人们发现View和Model之间的依赖还是太强,希原创 2017-05-21 08:54:30 · 1309 阅读 · 0 评论 -
分享的山 换个地图打开成了海
Android开发中,偶然发现,用百度地图分享出来的经纬度信息,再次用高德地图、腾讯地图打开,会出现几百米甚至几公里的偏移。借用网络相关评论 分享出来的明明是山,换个地图打开变成海了。一、现象打开百度地图:在地图上选择一个地点,查看其经纬度坐标。这里以我的老东家 网易北京研发中心为例。打开百度地图坐标拾取系统,搜索框输入 网易北京研发中心,获取经纬度坐标为:116.282314,40.049229。打开高德地图,高德地图逆地理编码系统。将百度地图坐标拾取的经纬度信息填入高德地图逆地理编码系统中原创 2021-04-02 16:10:06 · 597 阅读 · 0 评论 -
高德地图vs百度地图
高德地图、百度地图调研一、效果图地图滑动停止后,以屏幕中心为圆心,随机生成10个用户并将其显示在对应的Map上;点击对应的用户(红色气球),弹出该用户对应的用户名 与 课程名称效果图如下: ps: 显示在地图上的Marker 与 InfoWindow 均可自定义为其他图片或者View。 以上效果,高德地图与百度地图均可实现。二、git地址已上传到git地址:https://github原创 2017-08-11 11:13:21 · 3309 阅读 · 1 评论 -
Mac 中 Battery Historain 安装与使用
Battery Historain是谷歌开发的Android耗电量分析工具,其开发语言为go语言。因此,若安装Battery Historain,首先需要配置go语言环境。本以为go语言与Battery Historain安装是一件很简单的事情,但事实却是安装过程举步维艰。这篇文章仅用来记录Battery Historain安装过程中遇到的问题和解决方法,为同样做App耗电量相关的研究的其他同学提供一个参考。安装go安装Battery Historain一、安装go首先安装与配置go环境。原创 2021-06-10 01:02:24 · 1315 阅读 · 2 评论 -
OPPO PUSH 配额
OPPO PUSH 配额这个算是OPPO的一个坑,我们的App在今年11月份接入OPPO的push后,经过一个月的观察发现:每天从Oppo平台上发送10条Push,能顺利被用户接收到的只有4、5条。数据做不了假,这下无论是研发、产品、测试、运营 全都懵逼了,这是为什么?同样的是10条Push,在华为、小米等平台均不存在这个问题。后来数据组的同学说,会不会OPPO Push存在一定的配额?...原创 2019-11-30 21:27:01 · 1906 阅读 · 0 评论 -
RecyclerView + PagerSnapHelper 实现 抖音 首页翻页的Viewpager效果
RecyclerView + PagerSnapHelper 实现 抖音 首页翻页的Viewpager效果先来个效果 实现方式PagerSnapHelperActivity.javapublic class PagerSnapHelperActivity extends Activity { /** * UI */ // recycl...原创 2018-07-10 13:24:35 · 16180 阅读 · 2 评论 -
android手机电视助手是如何控制电视的呢?
以下是我和一同事的聊天记录:XXX 上午 9:19:26使用了两种方式,一个是手机端执行“adb shell input keyevent 键值” 命令操作,另一种方式是电视端静默安装遥控器插件XXX 上午 9:20:26还有第三种方法,通过httpserver呵呵 加油! 上午 9:21:40安装插件后,这个插件收到键值,又怎么传给系统呢,难道有相应的api?XXX 上午 9:24:13插件需要在原创 2017-05-18 10:31:27 · 1472 阅读 · 0 评论 -
android gradle多渠道打包不同资源
android gradle多渠道打包不同资源若感觉不够详细,可参考: http://xiaxveliang.blog.163.com/blog/static/2970803420160275356126/一、build.gradleapply plugin: 'com.android.application'android { compileSdkVersion 23 build原创 2017-05-22 09:56:33 · 1019 阅读 · 0 评论 -
Android微信智能心跳方案
转自:Android微信智能心跳方案收获:我觉得我们的推送和轮训是不是可以借鉴:1、把mqtt与轮询作为推送模块统一管理2、心跳半小时后主动断开心跳,重新建立连接3、心跳周期是不是可以延长到4.5分 、4、轮训周期是否可以1分到1小时5、网络变化时,重新建立连接6、连续失败5次才算失败前言:在13年11月中旬时,因为基础组件组人手紧张,L...转载 2017-05-22 11:05:31 · 1204 阅读 · 0 评论 -
Android的DPI、密度、物理尺寸的计算
1、术语表格及计算2、DPI的计算(已在对应表格中给出,不再重复介绍)3、密度的计算(已在对应表格中给出,不再重复介绍)4、物理尺寸的计算:从DPI对应表格已经知道屏幕物理尺寸的获取公式为:屏幕物理尺寸 = Math.sqrt(Math.pow(宽,2)+Math.pow(高, 2))/DPI对应代码实现:DisplayMetrics metric = new DisplayMetrics();g原创 2017-05-20 08:19:36 · 5764 阅读 · 0 评论 -
Android MotionEvent.getRawX
Android MotionEvent.getRawX原创 2017-05-20 08:21:49 · 524 阅读 · 0 评论 -
colorAccent,colorPrimary,colorPrimaryDark
colorAccent,colorPrimary,colorPrimaryDark转自:colorAccent,colorPrimary,colorPrimaryDark……来这里你就明白了 1.colorPrimary 应用的主要色调,actionBar默认使用该颜色,Toolbar导航栏的底色2.colorPrimaryDark 应用的主要暗色调,statusBarColor默认使用该颜色3.转载 2017-10-01 20:55:18 · 477 阅读 · 0 评论 -
SYSTEM_UI_FLAG_HIDE_NAVIGATION影响dispatchTouchEvent的回调
SYSTEM_UI_FLAG_HIDE_NAVIGATION影响dispatchTouchEvent的回调今天(2019.03.23)遇见一个奇怪了问题:首次触摸Activity时,其dispatchTouchEvent并未回调;但第二次触碰Activity时,dispatchTouchEvent被回调了;时间紧张并未探究其中的原因,但通过简单尝试发现,以下代码的使用影响了dispatchT...原创 2019-03-23 11:33:32 · 896 阅读 · 2 评论 -
Android ViewPager复用调研
一、要调研的问题:1、ViewPager有复用机制吗???2、ViewPager中最多存在多少View???二、测试demo代码GuideViewDemoActivity代码:package com.lenovo.guidedemo;import java.util.ArrayList;import android.app.Activity;import android.os.Bundl原创 2017-05-20 08:12:14 · 930 阅读 · 1 评论 -
Android Universal-Image-Loader使用
Universal-Image-Loader的github地址为: https://github.com/nostra13/Android-Universal-Image-Loader一、AndroidManifest.xml中增加网络权限和sdcard读写权限<!-- 联网权限 --><uses-permission android:name="android.permission.INTER原创 2017-05-18 10:34:53 · 325 阅读 · 0 评论 -
Android 子线程创建消息队列更新UI
假设这样一种产品需求: Android主线程崩溃后,向用户弹出一个UI提醒(一个dialog或者一个toast),告知用户APP异常崩溃。主线程崩溃后,给用户弹出一个UI提醒一般我们的做法是这样:CrashHandler.javaimport android.app.AlertDialog;import android.content.Context;import android.conten原创 2017-03-21 14:15:35 · 1285 阅读 · 0 评论 -
Android SQLite基本使用
SQLite的数据类型INTEGER – 整数,对应Java 的byte、short、int 和longTEXT/VARCHAR – 字符串文本,相当于java中的StringREAL – 浮点数字,相当于java中的float/doubleBLOB – 二进制对象,相当于java中的byte数组,可用于存放图片 注:sql中不区分大小写Sqlite中的约束约束就是限定数据库字段的条件,原创 2017-03-11 23:42:06 · 402 阅读 · 0 评论 -
Space在Android里的应用
Space标签于4.0添加的,直接继承自View,主要用于占位,不进行任何内容的渲染,google官方解释为Space is a lightweight View subclass that may be used to create gaps between components in general purpose layouts.Space是一个轻量级的View,一般用于分隔组件,布局或者在组原创 2017-04-10 19:55:19 · 690 阅读 · 0 评论 -
ViewStub在Android中的使用
ViewStub继承自View,是一个宽高为0的View。在调用inflate,向其父布局添加View后,ViewStub.this则被从其父布局中移除。使用MainActivity.javapublic class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle sav原创 2017-04-10 20:00:05 · 382 阅读 · 0 评论 -
FragmentTabHost在Android中的应用
FragmentTabHost为在一个父FrameLayout上,不同Fragment不断的切换(切换过程中会调用相应Fragment的onCreateView到onDestoryView方法),但对应Fragment的对象一直存在于内存中。使用方式案例代码下载 http://download.csdn.net/detail/aiwusheng/9809214activity_main.xml<?原创 2017-04-10 20:05:24 · 489 阅读 · 0 评论