![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 54
会飞的鱼儿android
想通过博客记录自己的学习历程和稳固自己的知识,当几年后再回看时也是对自己的一个人生总结,有点后悔没有早点写博客,这也和自己最近工作不是很忙有关,还是希望自己以后不管多忙,都要总结自己,写一写博客。
展开
-
android8.0弹出框报错Only fullscreen opaque activities can request orientation问题
1.原因:在解决页面跳转时黑屏或者白屏时添加了true, 然后这个时候又设置了页面的方向,从而导致了这个问题。源码分析问题:在26的编译版本时是可以正常的使用的,但是当把编译版本升级到27时,就会出现"Only fullscreen activities can request orientation"异常。对源码的分析,得出这是google出于安全的考虑,对android8.0以后的版本做的处理,当一个Activity固定方向并且是透明的,在8.0以后的版本中就会抛出异常问题解决不固..原创 2021-01-16 09:58:40 · 334 阅读 · 0 评论 -
zxing扫码在某些华为手机上闪退java.lang.IllegalArgumentException: Crop rectangle does not fit within image data.
一、前言最近开发了一个二维码扫码功能,使用的是zxing插件,但是客户在使用时,某些华为手机报错java.lang.IllegalArgumentException: Crop rectangle does not fit within image data.上网各种查,发现是因为zxing默认是横屏的,而我用竖屏的话就会报错二、解决方法修改CameraManager类的getFramingRect方法,修改为如下代码,修改完成后亲测好使。 public synchronized R原创 2021-01-13 09:59:51 · 1409 阅读 · 1 评论 -
android代码混淆详解
1、前言在对apk进行打包时,如果不对apk进行混淆和加固,生成的apk可以轻松的进行反编译,所以对apk代码进行混淆还是很有必要的。2、实现开启混淆 通常我们需要找到项目路径下app目录下的build.gradle文件 找到minifyEnabled这个配置,然后设置为true即可. release{ minifyEnabled true//是否启动混淆 ture:打开 false:关闭 shrinkResources原创 2020-06-28 13:51:44 · 2208 阅读 · 1 评论 -
解决android8.0无法启动activity报错问题
一、前言最近我在将targetSdkVersion设置为>26以后,在Android8.0的系统上,在登陆的闪屏activity界面,无法调用activity,后来查看是因为activity8.0中android:screenOrientation="portrait"与设置的style样式<item name="android:windowIsTranslucent">true</item>。冲突二、解决办法1、将android:screenOrienta.原创 2020-06-19 14:48:23 · 4503 阅读 · 0 评论 -
apk反编译
一、需要的工具:dex2jar和jd-gui:都可以在网上下载到,非常好下载二、具体步骤1、将apk直接解压缩2、将解压缩的classes.dex文件直接放到dex2jar文件目录下,然后cmd,在dex2jar目录下执行d2j-dex2jar classes.dex,完成后会生成一个classes-dex2jar.jar文件3、打开jd-gui程序,然后将classes-...原创 2020-03-16 15:25:34 · 317 阅读 · 0 评论 -
Android安全漏洞总结
一、前言在Android开发过程中,一般都不会太注重app的安全漏洞问题,除非遇到要求比较高的公司或者有对app提供检测的机构进行检测,但是检测和加固的费用比较高,所以一些app就忽略了这个问题,但是我最近做的app安全级别较高,多个安全机构检测后会有如下问题,顺便说一下检测机构有很多,如360、蓝盾、梆梆等。二、问题总结应用签名未校验风险 高 加入签名校验 应用数据任...原创 2020-02-25 09:29:05 · 3172 阅读 · 0 评论 -
Android根据目标地址选择高德和百度地图进行导航功能
1、首先确定安装包是否安装方法 /** * 检测程序是否安装 * * @param packageName * @return */ private boolean isInstalled(String packageName) { PackageManager manager = getApplication(...原创 2019-10-21 10:39:47 · 1190 阅读 · 0 评论 -
Android学习知识点整理
1、学习网址http://hukai.me/android-training-course-in-chinese/basics/firstapp/building-ui.html2、intent中定义变量的习惯方法:public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE";定义key为...原创 2018-10-15 13:12:42 · 457 阅读 · 0 评论 -
Android使用PagerBottomTabStrip实现底部菜单和顶部导航功能
1、前言(1)底部选择菜单功能应该是大多app都会用到的,实现方式也有很多种,比较笨的方法可以自定义一个xml,下方布局样式,每次点击不同按钮时跳转到不同activity,这个activity重新加载一下底部菜单(2)今天介绍一个网上比较流行的底部菜单PagerBottomTabStrip功能,主要是这个菜单样式比价好看,而且点击时有点击效果,感觉还是不错的,而且也可以在菜单上加数字显示。...原创 2018-08-28 11:47:19 · 3875 阅读 · 5 评论 -
Android中注解的使用
1、前言今天在看开发源码时有用到注解的概念,就研究了一下为什么要使用注解呢?直观来看作用就是“明显”,通过一个标注说明当前方法/属性的意义,从而使得代码的可读性变强,是一种不错的开发手段2、为啥使用注解?注解个人感觉挺不好理解的,但是为啥还用到注解了呢?越大的项目,使用注解就越清晰,代码可读性越高,维护起来就越简单。简单来说,通过注解,可以使我们的开发更方便简3、注解的理解...原创 2018-10-23 16:16:28 · 568 阅读 · 0 评论 -
popupWindow详解和仿微信弹框实例
1、介绍(1)使用PopupWindow可实现弹出窗口效果,,其实和AlertDialog一样,也是一种对话框,两者也经常混用,但是也各有特点。AlertDialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情;而PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待。(2)PopupWindow可以指定位置,并且弹出的框位置在指定位置的时可...原创 2018-11-03 14:20:09 · 795 阅读 · 0 评论 -
fragment实现仿美团下拉筛选功能
1、前言在开发APP中,大家基本都会用到筛选功能,而美团、房天下、淘宝等都会有一个下拉筛选功能,其实实现起来并不是很难,先上图看一看,样式可能不太好看,还请见谅。页面筛选时有动画效果。2、思路总结和源码(1)首先是一个xml页面,整体思路就是上方按钮正常布局,下方通过fragment写入两个listview,因为listview是浮动的,通过控制上层listview的弹出和回收来控...原创 2018-11-03 16:15:58 · 2668 阅读 · 0 评论 -
ViewPager的详细介绍和图片滑动功能实例
1、使用场景在APP设计中,如果涉及到左右滑动功能,如:下方导航条、上方导航条、图片滑动、翻页能功能时,则可以直接使用ViewPager进行开发,ViewPager自带滑动和翻页效果,可以用ViewPager自身的adapter进行开发,要方便很多。2、属性详解ViewPagerViewPager 是负责翻页的一个 View。准确说是一个 ViewGroup,包含多个 View 页...原创 2018-11-12 09:55:28 · 697 阅读 · 0 评论 -
MVVM框架的使用介绍和为什么选择用MVVM框架
1、MVVM的选用(1)接触Android也有很长时间了,大多数时间都是自己在摸索开发,以前由于开发任务重,一般不太敢用新的东西,怕有解决不了的就麻烦了,一直也都有听说过Android的各种框架,MVP,MVVM比较流行,网上说的各有各的优缺点吧,感觉就是大型APP用MVP更好,中小型用MVVM框架更好,因为不用像MVP那样需要建很多类(2)我自己分析的MVVM的优势:不用像MVP那样建很...原创 2018-08-01 10:22:20 · 3674 阅读 · 0 评论 -
LFilePicker自定义文件选择器框架
1、最近有用到文件选择功能,记得以前用过自定义选择文件的框架,但是忘了用的啥了,只能重新翻一遍代码了,看来还是记录一下比较好。2、文件选择框架用的是LFilePicker,个人感觉这个框架写的非常好,颜色啥的都可以自己定义,还可以过滤选择的文件,项目下载地址:https://github.com/leonHua/LFilePicker star数为466,说明 还是比较流行的。写的比较详细的博客...原创 2018-06-02 09:39:51 · 1452 阅读 · 0 评论 -
Gilde的详细使用
1、以前一直用的是Fresco图片加载框架,感觉用的还行,但是最近用到一些框架时,加载的是Glide框架,那好吧,咱也就不加载新框架了,直接用起来。2、compile 'com.github.bumptech.glide:glide:4.1.1'3、布局方式<ImageView android:id="@+id/image_view" android:layout_width...原创 2018-06-15 15:32:16 · 2911 阅读 · 0 评论 -
fastJson的详细使用以及与Gson的对比
1、最近上网查询项目时,fastJson比较常用,而且在网上查询和gson的比较时,都一致认为fastJson要比gson要好,效率更高,那么我们也得跟上时代的进步啊,在这里写一个fastJson的工具类: compile 'com.alibaba:fastjson:1.2.12' package com.fei.main.utils;import com.alibaba....原创 2018-06-01 11:42:20 · 1291 阅读 · 0 评论 -
Git的安装和使用
1、今天想将自己的项目上传到服务器上,方便自己以后随时使用,以前一直用svn,需要自己搭建服务器,看到git在码云上可以创建免费的服务器,就用了一下码云地址:https://git.oschina.net/2、注册账号,成功后创建自己的项目即可,创建完成后,有如下样式、3、创建自己的秘钥(目的是,用户在电脑端下载项目后,可以对项目进行写操作,不然不可以进行写操作)。添加公钥方法可以...原创 2018-06-05 15:47:28 · 370 阅读 · 0 评论 -
Dialog的详细使用
1、自己虽然一直使用过dialog,但是一直都是复制、粘贴;不清楚dialog的具体用途,这次趁着有时间,总结一下具体用法。当在自定义dialog时,其实原理时一样的,通过代码写一个view,然后将new的dialog添加上view即可。也可以直接写一个类继承dialog。然后调用即可。 代码下载地址:https://download.csdn.net/download/f55...原创 2018-05-29 16:18:06 · 76196 阅读 · 5 评论 -
Retrifit+RXJava多文件上传Android端+Java端代码
1、今天终于实现了retrifit+RxJava的多文件上传,这个东西真的困住了我挺长时间的了。因为要结合后台已经写好的java代码,只能一遍遍找代码,也有自己刚刚接触retrifit的关系吧。2、首先Android代码是基于https://blog.csdn.net/wzgiceman/article/details/51939574这个的封装进行实现的,所以需要结合这个一起参考才能实现...原创 2018-06-11 16:11:48 · 1336 阅读 · 0 评论 -
Fresco的使用和加载图片的方法
1、前言以前虽然也用Fresco做过一些项目和例子,但是今天在家写一个图片显示内容,发现没有源程序不知道怎么加载本地图片,觉得还是写到博客上比较好,以后可以时长看一下,可以参考https://blog.csdn.net/u011164565/article/details/51330778,写的真是非常详细了2、导包:compile 'com.facebook.fresco:fres...原创 2018-04-06 11:46:41 · 218 阅读 · 0 评论 -
Android完美实现视频播放功能
1、前言视频播放功能在APP开发中有的会用到这个功能,实现视频播放四种方式(1)系统自带的视频播放器(2)VideoView播放器(自带开始、停止、暂停等功能,进度条自带不能改变),实现起来较简单(3)SurfaceView+MediaPlayer实现播放器(SurfaceView是视频播放功能,不带进度条等时间显示功能,需要自己按照需求开发),比VIdeoVIew实现要困难。...原创 2018-11-14 11:53:59 · 4024 阅读 · 1 评论 -
Android中动画详细讲解
一、前言Android动画经常会在切换activity、数据加载时会用到动画效果,以前接触的比较少,用的都是封装好的动画效果,自己写的比较少,今天心血来潮想写一个自己设计的动画效果,发现学习动画代码比较简单,但是要实现某些特定的动画效果需要很多逻辑,感觉就麻烦了,正好把动画animation整理一下。二、概述Android动画实现一般都用animation,动画包含三大类型View A...原创 2018-11-27 16:26:46 · 12229 阅读 · 1 评论 -
Android通俗易懂理解堆栈的使用
一、前言在Android开发中,都需要从一个activity启动到另一个activity,而启动时就需要判断新的activity的启动模式。以前一直都不是特别了解这几个模式都是干啥的,只知道拿来用,网上的许多讲解感觉都是写了一大篇,理解起来比较费劲。今天详细讲解一下,如有不对的地方,请大家留言指正。二、概述activity有四重启动模式standard(默认),singleTop、si...原创 2018-11-30 16:04:28 · 1300 阅读 · 0 评论 -
aapt.exe'' finished with non-zero exit value 1错误解决
一、前言 今天重新换了台电脑,就把以前的项目重新导入到Android studio中,发现报错aapt.exe'' finished with non-zero exit value 1,网上查了各种解决办法,有的说删除配置文件的,有的说冲突,在gradle.prepersis中加入false标识的,我加完后发现都不行。二、解决办法真的是黔驴技穷啊,最后对比以前的代码,发现就改了一个...原创 2019-05-21 16:01:18 · 911 阅读 · 0 评论 -
MaterialIntroView引导页的使用
一、前言 所谓引导页就是在用户第一次使用APP时,会指导用户点击某个按钮,告诉用户这个按钮的具体作用。引导用户使用APP,而MaterialIntroView引导页框架则是一个比较好用的框架,可以实现大部分引导功能,可以针对某一个view进行详细描述。GitHub地址二、使用代码1、下载jar包,反正我是根据这个地址没有下载到jar包,然后是直接调用的aar包,具体包可以去我...原创 2019-03-22 14:59:02 · 692 阅读 · 0 评论 -
Android本地数据库的选择ObjectBox,Realm
一、前言本来不太想写这篇博客的,因为网络上关于Android数据的对比博客已经挺多了,以前自己用过OrmLite,最近接手了两个项目,一个用的是Realm,一个用的是ObjectBox,感觉如果自己不写个博客,过段时间忘了就糟糕了,趁着现在刚写完,记录一下。二、数据库比较1)有db数据库的:如OrmLite(自己用过),GreenDao(流行)这两个,都会在Android本地建立Sql...原创 2019-03-13 11:19:56 · 1665 阅读 · 2 评论 -
Android中interface使用详解
一、前言接口是我们在Android开发中经常用到的,通过接口可以简化我们在主activity的代码量。在下载时候的进度回调,在adapter与activity之间的回调,在javabean和fragment以及fragment之间的回调等等,回调的目的主要有两个:其一是传递数据,其二是保持数据的同步更新。常用的有两种形式,一是使用内部类的形式,得到接口的子类对象,另一种是直接实现定义的接口。...原创 2019-03-04 14:12:05 · 4924 阅读 · 0 评论 -
自定义ActionBar使用详解
一、前言标题栏是Android开发中永远也躲不过去的知识点,而自定义标题栏就成为了每个Android开发者必回的内容,我以前自定义标题栏有点稍微复杂,在androidMainfest中设置的没有标题栏,在每个xml中include一个自己写的layout,然后在BaseActivity中写入一些基本方法,在写的activity中直接调用,属于走了一点弯路,而今天介绍的是真正自定义ActionB...原创 2019-03-14 10:55:54 · 972 阅读 · 0 评论 -
Android8.0适配总结
一、前言 现在一些新的手机系统基本都达到了8.0系统,9.0系统也即将上市,以前大家开发时使用的SDK都是26以下版本,所以还没有涉及到适配问题。但是根据最新应用市场要求,以后上传的apk的sdk必须都得是26以上才可以,TargetSdkVersion对开发者来说,指的是应用在开发阶段能够支持到的目标系统版本。应用在运行时,系统会检查其TargetSdkVersion配置,如果当前系统...原创 2019-02-26 10:10:11 · 2792 阅读 · 0 评论 -
ExpandableListView使用方法详解
一、前言 “好记性不如烂笔头”,再次验证了这句话是真的很有道理啊,一个月前看了一下ExpandableListView的使用,今天再看居然忘了这个是干啥的了,今天就详细讲解一下ExpandableListView的使用方法,感觉对于二级条目显示功能都可以实现。二、实现的功能1、可实现二级列表条目显示功能,具体包括可自定义,父布局和子布局。可实现父布局全部展开和只展开一个功能。...原创 2019-03-01 14:04:14 · 25755 阅读 · 29 评论 -
Android文件读写操作总结
一、简述apk中有两种资源文件,raw下的和assert下的,这些数据只能读取,不能写入,两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类,res/raw不可以有目录结...原创 2019-02-22 10:31:16 · 5457 阅读 · 0 评论 -
Android中H5开发和如何画复杂图表
一、前言 今天算是加入新公司整两个月了,一直没有写博客,主要是感觉没啥可写的,感觉没有完整的知识点供参考。在两个月也学习了许多新的知识,新的公司算是比较大的公司,好多功能都进行了封装。首先,两个月接手6个项目,想想都可怕,幸好都是些维护型的,可改动的不多,每天就是看代码。6个项目中有两个项目是完全用H5开发的,两个项目是Android和H5混合开发的,两个项目是纯原生的。1、纯H5开发对...原创 2019-02-21 16:00:22 · 542 阅读 · 0 评论 -
productFlavors的使用
一、前言productFlavors是多版本打包的实现方式,正常开发中一般不会用到,但是项目中如果需要打包多个不同包名的版本,笨方法就是多个工程,但是维护起来实在是太麻烦了,但可以使用productFlavors,可以对APP名称、APP加载内容、APP中显示的文字进行分别编译。二、实现代码1、在build中配置productFlavors { //新建产品ApkTest...原创 2019-01-16 10:01:56 · 15245 阅读 · 2 评论 -
EventBus使用总结和使用场景
一、EventBus介绍EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。传统的事件传递方式包括:Handler、BroadcastReceiver、Interface回调,相比之下EventBus的优点是代码简洁,使用简单,并将事件发布和 订阅充分解耦。二、使用场景刚开始接触EventBus的使用...原创 2019-01-21 11:25:40 · 5296 阅读 · 0 评论 -
Android中action启动方法大全
1、Intent简介Intent的中文意思是“意图,目的”的意思,可以理解为不同组件之间通信的“媒介”或者“信使”。 目标组件一般要通过Intent来声明自己的条件,一般通过组件中的<intent-filter>元素来过滤。 Intent在由以下几个部分组成:动作(action),数据(data),分类(Category),类型(Type),组件(Component),和扩...转载 2019-01-17 15:11:13 · 14491 阅读 · 1 评论 -
Android开发中容易遗忘的小知识
1、给页面添加背景 WindowManager.LayoutParams lp = getWindow().getAttributes(); /** * 此处设置亮度值。dimAmount代表黑暗数量,也就是昏暗的多少,设置为0则代表完全明亮。 范围是0.0到1.0 */ lp.dimAmount = (float) 0....原创 2018-12-29 16:48:00 · 345 阅读 · 0 评论 -
Android的Drawable分类和使用详解
一、前言最近在看关于Android的书籍,发现居然把Drawable当做一个章节来讲,感觉没有必要啊,Drawable不就是图片引用吗。深入理解后才发现我们平常用的只是比较常用和简单的,Drawable还是有很多其他实现方式的。今天就详细讲解一下Drawable。二、概述其实Drawable的种类有很多,常见的有BitmapDrawable、ShapeDrawable、LayerDra...原创 2018-12-15 15:58:55 · 2728 阅读 · 0 评论 -
Android触屏过程详解和实现view随手指移动而移动功能
一、前言在Android开发中,大家可能会遇到控件会随着点击或者滑动而改变,控件的滑动和大小改变上一章的animation动画效果已经讲过了,那么如何实现控件随着手势的移动而移动呢?二、概述1、在手指接触到屏幕以后会产生一系列的事件,而这些事件可以通过MotionEvent和TouchSlop进行监听,典型的事件有如下几种:(1)ACTION_DOWN:手指刚接触屏幕的事件(2...原创 2018-12-07 15:24:50 · 4105 阅读 · 2 评论 -
自定义View详解
一、前言自定义View可能大家平常都会使用到,但是一般都是复制一个别人的代码,还没有过完全自己写的自定义view吧。自定义view一般使用在自定义进度条时会用到。自定义可以简单理解为封装的TextView、Button等都是继承自View。二、概述自定义View需要学习三个变量属性;Canvas(画布)、Paint(画笔)、Rect(尺寸)1、Canvas(画布)类可以用来实现...原创 2018-12-11 16:03:32 · 1323 阅读 · 0 评论