
android进阶
文章平均质量分 51
yushuangping
该奋斗的年龄不要选择了安逸!
展开
-
ConstraintLayout,横向排列左右紧靠,左边长度自适应但不会顶掉右边
【代码】ConstraintLayout,横向排列左右紧靠,左边长度自适应但不会顶掉右边。原创 2022-11-17 22:53:42 · 1068 阅读 · 0 评论 -
如何解决ViewFlipper的onClick和onTouch的冲突事件
在Android中,对一个View同时调用OnTouch事件和OnClick事件时,导致事件冲突,比如onClick事件打算执行A动作,OnTouch事件打算执行B动作,但是在实际使用时会发现,当调用OnTouch时,有可能会同时执行A,B两个动作,这是因为OnClick事件本身就是在OnTouch事件中发生的;在onTouch事件中,如果返回true,就不会执行onClick,返回false,就同时执行onClick方法,要想把OnTouch和onClick事件完全的区分。原创 2022-10-20 11:01:00 · 1070 阅读 · 0 评论 -
dex2jar 和 jd-gui 的安装与使用
将APK直接解压(修改后缀名为.zip,然后解压)后,可以看到目录下包含一个classes.dex文件。如下图所示,是一个APK文件解压后得到的:若想要阅读该文件的内容,可以使用 dex2jar 和 jd-gui 工具。下面介绍这两种工具的安装及使用方法。一、安装dex2jar下载地址:dex2jar download | SourceForge.net。下载之后解压即可,如图:二、使用 dex2jar1. 将需要反编译的dex文件(这里是classes.dex)复制到.原创 2021-12-23 16:49:40 · 16541 阅读 · 3 评论 -
android TextView webView 显示 html table 标签内容
我想显示的html标签字符串如下:String s="<div><p>凤凰网港股港股通资金流向统计,9月27日,腾讯控股(00700.hk),美团-W(03690.hk),华润电力(00836.hk),南向资金净流入金额位列市场前三,分别净流入1125.70386百万,726.50990百万,361.71790百万。</p><table style=\"width: 100%; border-collapse: collapse; text-align: c原创 2021-10-11 14:57:48 · 1475 阅读 · 0 评论 -
Class“X“ is public, should be declared in a file named “X.java“
如下图所示,当类名和文件名不一致的时候就会出现这样的问题.这时只要把文件的名字改成和类名相同就好了.问题很低级,但是有时候猛一看可能不知所云.原创 2021-09-27 15:07:19 · 774 阅读 · 0 评论 -
more than one file was found with OS independent path ‘org/joda/time/tz/data/Europe/Dublin
AndroidStudio能编译成功,但是运行打包apk时失败,报如下的错误:我当时是在int环境(测试环境)经过一番查找终于找到原因:我app的build.gradle里面是这样写的:原来切到测试环境会编译进去两个依赖库如下图:在运行打包时就会出现冲突,把implementation(name: 'IMSDK', ext: 'aar')去掉就可以了...原创 2021-09-07 14:30:54 · 265 阅读 · 0 评论 -
@SerializedName注解
最近在和后台调试接口的时候看到后台返回的数据表示很无奈,如下所示:{ "Result": { "State": "200", "Msg": "成功" }, "Data": { "1": "100", "2": "CHECKED", "3": "UPDATE", "4": 201901021130, "5": 3.56 }}在Android开发中,使用第三方Gson包解析json成对象时默认的是将json文件里对应字段,解析到java代码里的属性字段里面。原创 2021-08-16 09:36:25 · 1776 阅读 · 0 评论 -
使用Toolbar/ActionBar自定义布局时,左侧/右侧有一段空白无法使用
今天写一个带有标题的布局时,标题栏的宽度不能填充满手机屏幕的宽度,布局如下所示:<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-a原创 2021-08-13 14:51:51 · 297 阅读 · 0 评论 -
GsonFormat.jar下载与安装
GsonFormat.jar下载,解析json 在AndroidStudio上添加本地插件 选择该jar包即可原创 2021-07-09 09:33:17 · 1112 阅读 · 0 评论 -
Process ‘command ‘C:\Users\ysp\AppData\Local\Android\Sdk\build-tools\26.0.2\aapt.exe‘‘ finished with
今天从github上导入一个项目报如下的错误:在网上查找了很多方法也没解决,再仔细看下错误日志,发现是找不到v7 28.0.0下面的资源文件,但是我项目使用的v7包是26.0.1的,为什么会报找不到v7 28.0.0下面的资源文件呢,那肯定就是导入的依赖库造成的,我就去下载xframe源码结果发现在xframe的build.gradle下引入的高版本的v7包如下图这就很好理解了为什么会报错了,主程序是26的v7包,而依赖库是最新的v7包(也就是28的)导致两边的v7包版本不一致导致编译失败,原创 2021-02-26 14:49:21 · 370 阅读 · 0 评论 -
git中fatal: Authentication failed的问题
今天使用git拉取项目代码输错了一次账户和密码,然后就怎么也down不下来,直接报错。搜了下网上的解决方案:“git config –system –unset credential.helper”。但在我git上运行此命令会报错。到处清除缓存,也没啥作用,实在让人很无奈,最后终于在一篇文章找到了解决方法。fatal: Authentication failed就是凭证失败的意思,那么凭证失败自然想到的就是修改凭证了。win10下git的凭证存在windows系统,位置 控制面板点.原创 2021-02-18 10:41:44 · 1275 阅读 · 0 评论 -
Invoke-customs are only supported starting with Android O (--min-api 26)
今天添加了一个依赖库同步代码的时候报如下的错误:出现此问题是因为项目未设置Java8的支持,解决方案:在app的build.gradle的android节点下添加如下的代码: compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }如下图所示:...原创 2021-01-27 16:00:21 · 340 阅读 · 0 评论 -
Android studio git创建与删除标签(Tag)
git上的标签一般是用于标记版本,当发布新版本后,便将该版本的代码打上Tag,用以区别及管理使用标签前需要先将代码提交到远程仓库上创建并提交Tag远程端提交后:...原创 2020-12-29 16:35:34 · 574 阅读 · 2 评论 -
GitHub传代码错误fatal:Authentication failed for‘https://git……解决方法
今天往gitHub上提交代码时报如下的错误:在一次上传代码的时候,不知道修改Git登录密码需要重新认证这个情况,然后提交代码的时候提示了上面的那个错误,当时有点意外,毕竟第一次遇到这种问题,然后就搜教程开始解决,但是第一次尝试没有成功,后来又试了一次,解决可以正常上传提交代码了,步骤其实很简单,有如下的几种方式:方法一:git config --global user.name “xxx”git config --global user.email “xxx”方法二:git r.原创 2020-12-28 11:22:54 · 3459 阅读 · 0 评论 -
Error while executing: am start -n ““ -a android.intent.action.MAIN -c android.intent.category.LAUNC
今天改包名后,运行程序出现下面的错误:手动卸载了手机上的App,然后点击Android Studio的运行按钮就出现了上面的bug.死活运行不起来!尝试了clean project,对我无效如下图所示我改变了下app 中build.gradle的versionCode和versionName的值,同步一下代码就安装成功了...原创 2020-12-28 10:40:23 · 470 阅读 · 1 评论 -
Android RecyclerView 中多Item的EditText,RadioButton,CheckBox焦点混乱,数据错乱的解决方法
最近在做项目时,UI设计师给了一个设计图,添加多个人的信息时,item里面包含了EditText在填写姓名时出现数据混乱,如下图所示:RecyclerView中EditText的监听处理这个界面的主要逻辑是监听每个EditText的输入,然后保存到个人对象里,最后保存到服务器上。RecyclerView中Item里EditText的监听可以按如下代码实现:首先定义个回调接口: public interface OnTextChangeListener{ void onClic原创 2020-12-24 14:09:11 · 1362 阅读 · 4 评论 -
Android修改项目包名
因为工作需要,经常需要一套代码修改很多次包名,虽然不是什么技术活,经过几次痛苦的经历后,觉得有必要记录一番!将项目切换到Progject结构,查看java包名结构,一般是这样的点击show options menu按钮(小齿轮),如下图:去掉勾上的 Compact Middle Packages 和 Show Members 如下图java包的展示目录结构就改变了对于包名目录结构不改变的。就分别改各个层次对应的包名或者直接按快捷键 Shift + F6..原创 2020-12-21 15:36:17 · 194 阅读 · 1 评论 -
Android解决手机图片压缩后旋转问题
在Android APP开发中经常会有上传图功能,手机拍摄的照片大多都有2M - 5M,把这么大的图片上传上去是需要很长时间的,并且图片过大非常容易导致用卡顿甚至是OOM直接崩溃掉,那么为了优化性能就必须要做图片压缩处理,但是图片压缩后,显示在手机上的图片发生了旋转,解决方法也比较简单,下面直接把我的压缩工具类贴出来,以及多图片旋转的处理:/** * Created by ysp * on 2020/12/6 */public class ImageCompressUtils { /*原创 2020-12-09 23:23:42 · 2167 阅读 · 0 评论 -
Android图片压缩(质量压缩和尺寸压缩)
什么是质量压缩?质量压缩:将Bitmap对象保存到对应路径下是所占用的内存减小,但是当你重新读取压缩后的file为Bitmap时,它所占用的内存并没有改变,它会改变其图像的位深和每个像素的透明度,也就是说JPEG格式压缩后,原来图片中透明的元素将消失,所以这种格式很可能造成失真,即图片的质量压缩,会改变图片在磁盘中的大小(File文件的大小),不能改变图片在加载时,在内存中的大小。应用场景:图片的上传。什么是尺寸(采样率)压缩?尺寸压缩:将Bitmap对象的像素点通过设置采样率,减少Bitm原创 2020-12-09 23:06:06 · 1043 阅读 · 0 评论 -
java.lang.NullPointerException: Attempt to invoke virtual method ‘android.content.res.XmlResourcePar
今天在写app新版本升级模块时报如下的错误:一般出现这个问题,就是provider配置中authorities的名称和具体引用时写的不一致,配置authorities时尽量使用包名,如下:具体的引用,也要很细心。尽量用getPackageName()来获取包名。包名后面的.provide也要和AndroidManifest.xml中的一致,不然还是会报空指针。但是我遇到的问题比这个复杂一些,我的项目中依赖了一个库,l库里面的代码用到了authorities。但...原创 2020-12-09 22:37:16 · 1855 阅读 · 0 评论 -
下载资源失败:FileDownloader http-state[412] {If-Match=
测试环境资源下载都是正常的,今天上线后,生产环境资源下载地址总是下载失败,抛出如下的异常:java.net.SocketException:Connectionfailedwithrequest[{If-Match=["5fc85ac7-18f0b"],Range=[bytes=0-],User-Agent=[FileDownloader/1.7.6]}]response[{null=[HTTP/1.1412PreconditionFailed],Connection=[keep-...原创 2020-12-04 00:09:32 · 1632 阅读 · 2 评论 -
android 如何用代码判断手机是否被root
直接上代码:public class RootUtils { public static boolean isDeviceRooted() { return checkRootMethod1() || checkRootMethod2() || checkRootMethod3(); } private static boolean checkRootMethod1() { String buildTags = android.os.Build原创 2020-08-13 10:37:28 · 1136 阅读 · 0 评论 -
android studio生成aar包并在其他工程引用aar包
什么是arr包?arr包是AndroidStudio下打包Android工程中的src、res、lib后生成的arr文件,arr包导入其他AndroidStudio工程后,其他工程可以方便引用源码和资源文件生成arr包步骤1.用AndroidStudio打开一个工程,然后新建一个Module,如下图:2.新建Module时候选择Android Library,后面按新建普通工程操作,如下图所示:3.新建Module类型为Android Library后,如下图所示:4..原创 2020-06-23 11:01:45 · 1346 阅读 · 0 评论 -
Duplicate zip entry [25.jar:com/mob/MobApplication.class
今天在项目中把微信分享的第三方库源码作为依赖库时编译时报下面的错误:Duplicate zip entry [25.jar:com/mob/MobApplication.class之前项目中是以aar的方式集成的这两个同时存在时造成了冲突原创 2020-06-09 16:32:18 · 294 阅读 · 0 评论 -
美团Walle多渠道打包以及解决360加固丢失渠道信息问题
以前负责项目打渠道包时,都是使用传统的方式进行打包,自从发现美团的打多渠道包方式后,感觉少用了不少的时间美团新一代渠道包打包神器walle github地址下面我来说一下自己集成美团的多渠道打包方式,方便自己回顾,也希望能帮到大家我是美团wallegradle插件集成和360加固失效方案相结合使用的首先在当前App的build.gradle文件中添加上用于读取渠道号的AAR,并...原创 2020-04-17 16:05:53 · 1123 阅读 · 0 评论 -
Android实现跑马灯效果及问题解决
今天公司项目让实现一个跑马灯的效果,因为有用户反映总是忘记还款截至时间,于是就要求做一个单条文字横向滚动的效果,用于提示用户。GitHub上找了几个跑马灯的库,本以为可以实现自己想要的效果,不过这个库真心不错,推荐给大家:1.sunfusheng/MarqueeView这是扩展了ViewFlipper实现的。2.gongwen/MarqueeViewLibrary 这也是扩展了...原创 2020-04-07 22:33:35 · 3890 阅读 · 0 评论 -
解决gradle依赖库下载慢的方法
今天打开项目时一直在下载Kotlin的配置,无比的慢,下载速度像蜗牛一样!最后在网上找到了解决的办法首先,我们来看看工程的gradle文件里面google官方的依赖方式:buildscript { repositories { mavenCentral() jcenter() google() } depende...原创 2020-03-22 14:11:24 · 7011 阅读 · 2 评论 -
今日头条屏幕适配方案(AndroidAutoSize)
鸿洋提出的屏幕适配AndroidAutoLayout,目前已经停止维护,故不建议使用AndroidAutoSize框架链接:https://github.com/JessYanCoding/AndroidAutoSize今日头条适配方案:https://www.jianshu.com/p/4aa23d69d48...原创 2020-03-06 19:35:39 · 4039 阅读 · 1 评论 -
Lock file: C:\Users\ysp\.gradle\caches\modules-2\modules-2.lock
升级AS版本到3.5.3,然后导入之前的项目,就 产生了下面的错误:解决办法:重启AS,如下图:原创 2020-02-27 15:28:29 · 1373 阅读 · 0 评论 -
Android存储路径和获取方法
经常用到的三个位置:1./data/data/包名/2./sdcard/data/data/包名/3./sdcard/xxx前两个是应用内部存储,会随着app的卸载而自动删除,sdcard中其他文件夹不会自动删除,除非用户手动删除,否则会一直存在,换句话说就是垃圾,Google/官方建议把数据存储在/sdcard/Android/data/包名/下。路径的获取方法:前两个是...原创 2020-01-14 15:27:23 · 336 阅读 · 0 评论 -
Android随机验证码的生成
Android随机生成验证码,Android利用随机数绘制不规则的验证码,加强用户登录或者注册的安全性。具体思路如下:在一块固定宽高的画布上,画上固定个数的随机数字和字母,再画上固定条数的干扰线,随机数和干扰线的颜色随机生成,随机数的样式随机生成。界面效果如下:1.生成随机数的代码,Code.javapublic class Code { //随原创 2017-05-04 16:29:23 · 3107 阅读 · 0 评论 -
android6.0动态权限的设置
只需要两步走: 一、代码请求权限 /** * android6.0运行时权限,检测 */if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//6.0以上 int checkPermission = checkSelfPermission(Manifest.permission.CAMERA); if (checkPe原创 2017-07-20 19:01:58 · 321 阅读 · 0 评论 -
Android Studio 出现 Gradle's dependency cache may be corrupt 错误分析
今天下载了一个Demo, 导入到AS时,报下面的错误如下图所示:针对此问题的解决办法是:gradle-wrapper.properties里修改了gradle的版本,与之前没有报错的gradle版本一致。就可以了distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip改为:原创 2017-07-25 12:32:28 · 226 阅读 · 0 评论 -
Android针对时间戳转几时几分昨天前天某年某月某日的显示
今天做项目的过程中使用到时间戳的问题,主要代码就是下面的那个方法: /** * 根据毫秒时间戳来格式化字符串 * 今天显示几时几分、昨天显示昨天、前天显示前天. * 早于前天的显示具体年-月-日,如2017-06-12; * @param timeStamp 毫秒值 * @return 几时几分 昨天 前天 或者 yyyy-MM-dd 类型字符原创 2017-09-25 10:22:15 · 1635 阅读 · 0 评论 -
解决TextView中MaxLines与ellipsize=end冲突问题
TextView控件有一个属性是ellipsize,指的是当文字内容长度超过TextView大小时显示问题,一般情况下我们都是用省略号表示,常用的情况有以下四种:1,android:ellipsize = "end" 省略号在结尾3,android:ellipsize = "start" 省略号在开头3,android:ellipsize = "m原创 2017-09-26 17:00:16 · 1510 阅读 · 1 评论 -
弧形动画菜单
最近公司项目需求,需要做一个弧形动画菜单的效果,在网上找了很久终于找到了自己想要的效果,现在记录下来以方便自己和大家学习,效果图如下: 首先需要添加依赖: compile 'csy.menu.satellitemenulib:SatelliteMenu:1.0.3' 在布局中的使用如下:原创 2017-10-17 16:28:07 · 548 阅读 · 0 评论 -
在AndroidStudio直接运行时百度地图显示,打包成APK,安装在真机上不显示的问题
我在进行百度地图开发时,在AndroidStudio直接运行时百度地图显示位置信息,打包成APK,安装在真机上只显示网格。原因是申请百度key的时候填写的SHA1(也就是指纹证书)有问题。我们开发的时候应该都是按照百度开放平台上介绍的流程去申请的,直接运行是没问题的,但是打包安装就有问题了。因为按照百度开放平台的流程申请到的指纹证书只针对本地开发环境存在的默认签名文件debug.key原创 2017-04-26 15:46:39 · 1544 阅读 · 0 评论 -
AndroidAPK反编译
学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译。我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或者平板电脑下载下来进行安装。正常情况下,Android应用打包成apk之后,就无法再看到开发这个应用时使用的资源文件以及代码了。但是我们通过网上提供了一些工具,还是可以将apk进行反编译的,apk反编原创 2018-01-31 17:14:57 · 214 阅读 · 0 评论 -
Android调用系统Intent进行图片选取裁剪
调用系统Intent进行图片选取裁剪实现的步骤: 1. 调用相册中的图片裁剪然后显示。 2. 调用拍照功能获得图片裁剪然后显示。调用相册中的图片裁剪然后显示第一步 跳转系统相册获取图片 public static final int VALUE_PICK_PICTURE = 2; private void selectPicFromLocal() {原创 2018-01-25 16:02:24 · 2518 阅读 · 3 评论 -
小米系列手机调试Installation failed with message Failed to establish session
Android Studio升级到2.3版本之后,小米手机MIUI不能直接点击Run运行Android Studio程序,报如下错误:方法一 :设置Android Studio 中Instant Run中的选项为不选中1.根据以下路径,找到Instant Run中的选项File ——> Settings ——> Build, Execution,Deployment ——> Ins原创 2018-01-25 16:56:16 · 197 阅读 · 0 评论