
Android
文章平均质量分 94
hanfengzqh
这个作者很懒,什么都没留下…
展开
-
ALPHA_8、ARGB_4444、ARGB_8888和RGB_565的区别
在Android的Bitmap.Config中有四个枚举类型:ALPHA_8、ARGB_4444、ARGB_8888和RGB_565下面是这四种类型的详细解释:ALPHA_8:每个像素都需要1(8位)个字节的内存,只存储位图的透明度,没有颜色信息ARGB_4444:A(Alpha)占4位的精度,R(Red)占4位的精度,G(Green)占4位的精度,B(Blue)占4位的精度,加起来一...转载 2019-08-19 11:30:46 · 987 阅读 · 0 评论 -
Android targetSdkVersion 原理
前几天 Google 官方发布文章解析 compileSdkVersion、minSdkVersion 以及 targetSdkVersion 的含义,以及合理设置各个值的意义,原文 Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion(后面简称 “原文”),还有翻译版。其中,compileSdkVersion ...转载 2019-07-11 20:22:25 · 687 阅读 · 0 评论 -
Android色彩矩阵处理图像
Android中对于图片的处理,最常使用到的数据结构是位图——Bitmap,它包含了一张图片所有的数据。这个数据都是由点阵和颜色值组成的,所谓点阵就是一个包含像素的矩阵,每一个元素对应着图片的一个像素。而颜色值——ARGB,分别对应透明度、红、绿、蓝这四个通道分量,它们共同决定了每个像素点显示的颜色,下图就显示了自然界中的色光三原色。色彩矩阵在色彩处理中,通常使用一下三个角度来描述一个图像...原创 2019-02-28 16:53:33 · 373 阅读 · 0 评论 -
view.setAlpha(float alpha)与view.getBackground().setAlpha(int alpha)的区别
Android中对一个View控件透明度的设置,提供了两个方法:view.setAlpha(float alpha)与view.getBackground().setAlpha(int alpha)这两者的区别主要是:传递参数: view.setAlpha(float alpha)参数范围是0~1;而view.getBackground().setAlpha(int alpha)传入的...原创 2019-02-20 11:38:11 · 3283 阅读 · 0 评论 -
layout_constraintDimensionRatio中 H与W的区别
在 ConstraintLayout 约束布局中, layout_constraintDimensionRatio 表示 期望的 宽高比 ,这方面 网上资料很多,但还有 一些 隐藏的用法 网上查不到。layout_constraintDimensionRatio 不仅可以用来 表示 宽高比, 也可以用来 表示 高宽比正常写法下 layout_constraintDimensio...转载 2019-02-11 17:04:36 · 1527 阅读 · 1 评论 -
高斯模糊
1.Android高效计算——RenderScript(一)2.Android实现图片的高斯模糊(两种方式)3.Android 弹窗毛玻璃背景实践4.Android使用glide实现毛玻璃效果5.Android图像处理 - 高斯模糊的原理及实现6.Android 图片高斯模糊解决方案...原创 2018-12-17 19:45:13 · 536 阅读 · 0 评论 -
NestedScrollView嵌套WebView加载成功内容显示空白问题解决
因为需求问题需要采用CoordinatorLayout+AppBarLayout+ViewPager+NestedScrollView+WebView布局方式,虽然Google官方不建议NestedScrollView+WebView的嵌套使用,但是为了需求实现,实在是没有找到其他的可替代方案,只能是采用此方法了。因为采用此方案,相关的问题也随之而来,其中最大的问题就是,WebView内容成功...原创 2018-12-10 16:04:25 · 7079 阅读 · 3 评论 -
给TextView控件内容每一个文字设置点击事件
String dst = "Liver and kidney are particularly rich in vitamin A."; SpannableStringBuilder ssInfo = new SpannableStringBuilder(dst); String[] split = dst.split(" "); for (Str...原创 2018-11-09 13:03:14 · 622 阅读 · 0 评论 -
Android字符串资源使用格式化占位符的正确使用
在Android的String.xml中若是含有两个或者两个以上的资源格式化占位符,例如以下:<string name="user_my_answer_grade_course">%s %s</string>在编译的过程中编译器会出现以下错误提示:出现这个错误的原因在于aapt在编译时对字符串资源中的格式化占位符进行比较严格的校验,解决方案有两种:使用...原创 2018-09-27 11:25:22 · 1818 阅读 · 0 评论 -
APK安装卸载过程简介
APK打包过程:1.javac工具将*.java文件进行转换,转换后通常得到一个*.class文件;2.dx工具对*.class文件进行转换,转换后通常得到一个*.dex文件;3.通过aapt工具打包所有的资源文件打包得到*.ap_文件;4.通过apkbuilder工具把前两步得到的*.dex、*.ap_文件打包生成apk。注:dx、aapt工具均在D:\xxx\android-sdk-...原创 2018-09-20 17:29:46 · 1945 阅读 · 0 评论 -
Android 各版本对应API以及相关特性
Android K 4.0~4.4w 14~20Android L 5.0 21Android L 5.1 22Android M 6.0 23Android N 7.0 24Android N 7.1 25Android O 8.0 26Android P 9.0 27https://blog.youkuaiyun.com/aqi00/article/details/50730793 A...原创 2018-09-20 17:23:30 · 2006 阅读 · 0 评论 -
Android 如何在ListView中嵌套ListView
因为项目MRD的需要,要在一个ListView中放入另一个ListView,也即在一个ListView的每个ListItem中放入另外一个ListView。但刚开始的时候,会发现放入的小ListView会显示不完全甚至是空白一片完全不显示,它的高度始终有问题。上网查了下,发现别人也有遇到这样的问题,而大多数人都不推荐这样的设计,因为默认情况下Android是禁止在ScrollView中放入另外的S...原创 2018-09-15 11:32:07 · 4499 阅读 · 0 评论 -
ViewStub的使用简介
前言:在设计模式的单利模式中,懒汉式和饿汉式是其中两种。一种是在类被加载的时候就完成单例对象的初始化,一种是在需要使用该单例的时候才初始化。在android的视图设计中,同样需要使用的这样的设计模式。这样的视图加载起来需要耗费很多的时间。在这几百个视图里面,可能有部分视图是在点击某一按钮也就是并不是马上加载,而是延迟到要使用的时候才加载这部分视图。也就是类似于单例模式中的懒加载。...原创 2018-09-11 18:45:12 · 1506 阅读 · 0 评论 -
Android中Activity启动过程探究
首先追溯到Activity的启动,随便启动一个自己写的demo项目,使用DDMS进行debug标记,然后在Debug中把主线程暂停,可以看到调用栈。如下图所示:于是我们先看android.app.ActivityThread的main()方法。android.app.ActivityThread.main()main()方法中对一个Looper对象进行初始化,形成一个消息循环,那么任何主线程的操作...转载 2018-06-23 16:45:54 · 232 阅读 · 0 评论 -
阴影效果 ShadowLayout 布局实现(让控件实现立体效果)
效果 第二张和第三张图是加入了阴影效果的,是不是觉得立体感很强,感觉图片是浮在屏幕上。这个效果也可以用Google 提供扩展包下的CardView控件来实现,而这篇文章是带大家自己来实现这样一个效果。原理我们仔细观察上图,可以发现,有带阴影效果的图和没带阴影效果的图,其实就一个地方不同,就是在图片的底下绘制了阴影效果,而图片的大小都没变。所以我们要做的就是给子 View 绘制阴影。那么阴影部分怎么...转载 2018-06-22 10:23:36 · 1535 阅读 · 0 评论 -
setCompoundDrawables与setCompoundDrawablesWithIntrinsicBounds的区别
更换radiobutton中的图片在xml中很好设置,但对于初学者如何在代码中设置还是不容易找的。没法子,通过看原版api找到两个方法,setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds。下面交给大家方法。第一个方法:setCompoundDrawablesWithIntrinsicBounds(Drawable left, D...转载 2018-06-15 16:35:38 · 1955 阅读 · 0 评论 -
Java 中 Comparable 和 Comparator 比较
本文,先介绍Comparable 和Comparator两个接口,以及它们的差异;接着,通过示例,对它们的使用方法进行说明。 Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(...转载 2018-05-08 19:55:57 · 202 阅读 · 0 评论 -
Android TextView行间距解析
TextView行间距设置在布局XML中有两个参数可以对TextView的行间距进行设置。 分别为:android:lineSpacingExtra 和 android:lineSpacingMultiplier。 在代码中可以通过TextView的setLineSpacing()方法来设置。android:lineSpacingExtraandroid:lineSpacingExtra表示额外的...转载 2018-04-20 16:31:34 · 5314 阅读 · 2 评论 -
Fragment Activity 中startActivityForResult的回调
通过startActivityForResult在两个Activity之间传递数据应该没有任何问题,标准的模式为:[java] view plain copypackage com.ljq.activitys; import android.app.Activity; import android.content.Intent; import android.os.Bundle; im...转载 2018-04-20 11:14:48 · 1040 阅读 · 0 评论 -
Eclipse:控制台报错误: Unable to execute dex: method ID not in [0, 0xffff]: 65536 解决方案
因公司业务开发模块的需求,至今仍在使用Eclipse开发工具,融入多个第三方jar包,在编译过程中发现:Eclipse:控制台报错误:Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536应该是工程中引入了多个第三方jar包,导致对单个DEX文件调用的方法数超原创 2017-12-31 10:56:49 · 1287 阅读 · 0 评论 -
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException:解决办法
关于GSON的解析异常,如果你的程序遇到以下异常,一般来讲存在两种可能性:1.先找一个JSON格式化工具,首先验证自己接收自服务器的JSON数据是否格式错误;2.保证JSON数据格式没有错误的前提下,却一直报这个解析错误,那就请确定你的JSON数据没有多余的空格。这个空格有可能在IO流读取的时候多读了12-25 14:41:31.882: E/AndroidRuntime(3929):原创 2017-12-25 14:58:54 · 8218 阅读 · 1 评论 -
Android之android.os.DeadObjectException原因
近期使用到AIDL跨进程通信,出现:12-15 09:28:12.371: W/System.err(5412): android.os.DeadObjectException12-15 09:28:12.372: W/System.err(5412): at android.os.BinderProxy.transactNative(Native Method)12-15 09:28:原创 2017-12-15 10:56:32 · 25013 阅读 · 0 评论 -
INSTALL FAILED CONFLICTING PROVIDER问题完美解决方案
INSTALL FAILED CONFLICTING PROVIDER.png在安装Android应用时出现INSTALL FAILED CONFLICTING PROVIDER问题,是不是感觉很抓狂呢,下面就跟大家分享一下出现这个问题的原因及解决方案。问题原因在Android中authority要求必须是唯一的,比如你在定义一个provider时需要为它指定一个唯一的authority。转载 2017-12-08 11:03:12 · 781 阅读 · 0 评论 -
Android 蓝牙扫描枪连接状态变化(连接、断开)界面实屏幕会实时刷新重构一次
场景:Android设备连接蓝牙扫描枪,扫描条形码,获取扫描内容,进行支付,支付成功后到达成功界面,在onCreate()方法中初始化打印小票。问题:停留在支付成功界面,蓝牙状态发生变化(断开--连接--断开),小票重新打印。原因分析:扫描枪连接时是将其作为物理输入设备,即物理键盘,而安卓在改变屏幕方向、弹出隐藏键盘时都会重新执行onCreate( )方法。解决方案:在相应原创 2017-11-23 11:03:43 · 2709 阅读 · 0 评论 -
编译错误:Could not get unknown property 'release' for SigningConfig container
首先贴出编译错误的截图[java] view plain copy print?Could not get unknown property ‘release’ for SigningConfig Container. Could not get unknown property ‘release’ for SigningConfig Contai转载 2017-10-12 12:12:32 · 1327 阅读 · 0 评论 -
快速Android开发系列通信篇之EventBus
概述及基本概念**EventBus**是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过**EventBus**实现。作为一个消息总线,有三个主要的元素:Ev原创 2017-09-02 18:20:39 · 215 阅读 · 0 评论 -
Android6.0与Android4.4关于3重DES加密的简介
由于工作要求,需要将现有Android4.4.4平台代码迁移到Android6.0上面去,又因公司业务需要,对数据的安全性要求比较高,因此某些交互数据需要采用3Des加密进行数据传输。在4.4.4系统上采用/** * @param secretKey 16位 * 密钥 * @param plainText * 待加密数据 *原创 2017-08-09 15:32:07 · 596 阅读 · 0 评论 -
android程序中的AndroidManifest.xml中的uses-feature详解
AndroidManifest.xml中的uses-feature在android的manifest文件:AndroidManifest.xml中,有个:uses-feature这个xml节点。用于指定android程序,是否需要某种硬件或软件资源/功能。 uses-feature的语法<uses-featur转载 2017-08-08 09:57:58 · 2233 阅读 · 0 评论 -
地球坐标,火星坐标,百度坐标转换
标准地球坐标即GPS设备获得的坐标,该坐标需要经过国家测绘局进行加密后形成火星坐标(WGS-84 ),我们用的google坐标和高德地图坐标也就是火星坐标 百度地图,在火星坐标的基础上再进行一次加密,形成了百度地图上的坐标,因此,直接将标准地球坐标显示在百度地图上是会有几百米的偏差的。按照此原理,标准GPS坐标经过两步的转换可得到百度坐标。因为在处理百度地图时,例如查询其P转载 2017-08-04 11:26:53 · 693 阅读 · 0 评论 -
android locationManager定位
Android定位功能(一) 废话不多说,直接开始说说与实现Android定位有关的API吧。 这些API都在android.location包下,一共有三个接口和八个类。它们配合使用即可实现定位功能。 三个接口: GpsStatus.Listener: 这是一个当GPS状态发生改变时,用来接收通知的接口。转载 2017-08-04 11:25:36 · 644 阅读 · 0 评论 -
高德,百度,Google地图定位偏移以及坐标系转换
一。在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系:1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的;但是在国内是不允许直接用WGS84坐标系标注的,必须经过加密后才能使用;2.GCJ-02坐标系,又名“火星坐标系”,是我国国测局独创的坐标体系,由WG转载 2017-08-04 11:24:01 · 1406 阅读 · 0 评论 -
android不让程序显示在最近程序列表中
Android:excludeFromRecents属性用于控制程序在不在recent列表中显示。true时不显示;false显示,其中false为默认值。运行如下activity后,不会显示在recent列表中。程序正在运行或者退出,在长按HOME键的最近程序列表中不显示该应用以达到隐藏进程的目的。解决办法如下:在主activity处设置属性:android:原创 2017-07-17 16:24:40 · 7466 阅读 · 0 评论 -
Android_常驻进程(杀不死的进程)
常驻进程 Android常驻进程,就是要让进程在内存中永远存在,让进程保活,不被杀死。可能这时都会喷,这不是流氓软件吗?刚接触android的时候,我也是认为这是很流氓的做法,可是慢慢发现很多场景(应用),要为用户服务,就必须用到常驻进程,就好像微信,QQ,360安全手机卫士这些现在比较火,比较常用的软件来说,他们都是实现了常驻进程的。所以说,有时候常驻进程在开发中是必须的,转载 2017-07-17 16:08:04 · 3211 阅读 · 0 评论 -
银联二维码支付之主扫、被扫、查询接口
最近在做银联二维码支付Android端相关项目,因为中国银联网站上并未提供Android端demo,只提供了Java相关demo,只能是根据自己的业务需求去更改,开始看银联的开发文档觉得一脸懵逼,看不懂,后来经过深入分析,才知道自己没有理清步骤,在本篇文档中先介绍一下,银联二维码的主扫、被扫以及查询接口,后续会在介绍退货、冲证、撤销等相关接口。银联Java提供的SDK目录如下:在M原创 2017-07-13 09:24:43 · 20686 阅读 · 6 评论 -
android listview/ScrollView 去除顶部下拉时的半月形阴影和上下滑动顶部和底部的虚化
在android5.0当中正常的listview/scrollview在下拉的时候顶部会出现半月形的阴影效果,先要去除这个小效果可以设置android:overScrollMode=“never”就可以去掉这些效果。这句是用来去掉系统自带的阴影正常的listview/scrollview在进入和滑出控件边界的时候会出现一层虚化的效果:为了去除虚化的效果可以使转载 2017-06-14 12:58:48 · 1101 阅读 · 0 评论 -
Fragment的setUserVisibleHint方法实现懒加载
我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在这个activity刚创建的时候就变成需要初始化大量资源。这样的结果,我们当然不会满意。那么,能不能做到当切换到这个fragment的时候,它才去初始化呢?答案就在Fragment里的se转载 2017-06-09 18:08:42 · 207 阅读 · 0 评论 -
PackageInfo、ResolveInfo
1.PackageInfo、ResolveInfo PackageItemInfo:包含了一些信息的基类, 它的直接子类有: ApplicationInfo、 ComponentInfo、InstrumentationInfo、PermissionGroupInfo、PermissionInfo。 它的间接子类有: ActivityInf转载 2017-05-24 09:39:34 · 343 阅读 · 0 评论 -
Looper.prepare()和Looper.loop()详解
Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理。handler其实可以看做是一个工具类,用来向消息队列中插入消息的。 (1) Looper类用来为一个线程开启一个消息循环。 默认情况下android中新诞生的线程是没有开启消息循环的。(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环。)Looper对象原创 2017-05-12 09:29:26 · 6350 阅读 · 0 评论 -
Android中获取应用程序(包)的信息-----PackageManager的使用(一)
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename、label、icon、占用大小等。具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename、label、icon等 ; 第二部分: 获取应用程序的占用大小,包括:缓存大小(cachsize)、数据大小(datasize)。转载 2017-05-09 17:39:31 · 398 阅读 · 0 评论 -
Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等、应用程序/包、服务(Service)、任务(Task)信息。 计划如下: 第一部分:获取系统可用内存以及所有的正在运行的进程信息 ;转载 2017-05-09 17:38:16 · 471 阅读 · 0 评论