Android笔记
文章平均质量分 55
Android学习笔记
DeMonnnnnn
I decide what tide to bring. 我的命运,由我做主。
展开
-
Android 判断手机桌面是否已经存在App的快捷方式
我们需要在桌面添加快捷方式的时候,为了优化体验,有时候需要判断桌面上是否已经存在快捷方式。原创 2024-06-19 18:27:24 · 538 阅读 · 0 评论 -
Android 查看项目依赖树
执行后会将依赖日志输出在根目录的。原创 2022-12-29 16:51:05 · 1052 阅读 · 0 评论 -
Android 下载不同版本的platform-tools
复制到浏览器,回车即可下载28.0.2版本。右键下载成功的内容,复制链接地址。可以看到当前下载的是33.0.3版本。选择不同平台进行下载最新版本。下载完成后,进入下载内容。原创 2022-11-24 16:51:21 · 5797 阅读 · 0 评论 -
Android页面关闭时自动隐藏软键盘
问题我们希望页面关闭时自动隐藏软键盘。关闭软键盘的代码很简单:调用InputMethodManager#hideSoftInputFromWindow即可。public boolean hideSoftInputFromWindow(IBinder windowToken, int flags)hideSoftInputFromWindow方法是有返回值boolean类型的。Activity关闭时经历的三个生命周期onPause()---onStop()---onDestory()我们分别deb原创 2022-02-18 15:14:03 · 2618 阅读 · 0 评论 -
Android ProgressBar传统样式
<ProgressBar style="@android:style/Widget.ProgressBar.Small" android:layout_width="wrap_content" android:layout_height="wrap_content" />原创 2021-11-11 11:32:33 · 1543 阅读 · 0 评论 -
Android NavigationView头部点击事件无响应
一开始百度都说需要动态inflateHeaderView,然后通过findViewById取设置点击事件。如: View drawerView = navigationView.inflateHeaderView(R.layout.nav_header_main); CircleImageView account = (CircleImageView) drawerView.findViewById(R.id.account); account.setOnClickLis原创 2021-06-09 18:06:48 · 367 阅读 · 0 评论 -
Android Glide4.x使用视频的第N帧作为封面
Glide4.xGlide4.x提供了frame(@IntRange(from = 0) long frameTimeMicros)方法,可以从提取视频的第N帧作为图片加载。缺点:如果是网络视频链接,第一次加载会非常慢。val options = RequestOptions() .diskCacheStrategy(DiskCacheStrategy.ALL) //获得第1帧图片 这里的第一个参数 以微秒为单位 .frame(1原创 2021-04-19 17:37:41 · 2426 阅读 · 3 评论 -
Android 新版v2签名&渠道包工具
Apk签名工具Android7.0引入了全新的APK Signature Scheme v2签名方式,使用传统的JDK jarsigner命令行签名只能进行v1签名,如果要进行v2签名就要使用SDK提供的apksigner工具。apksigner.jar在版本>25的SDK\build-tools\中。基于此,使用JavaFx编写了安卓Apk签名工具,方便快速进行v1&v2签名。无需记忆复杂的命令行,点击几下即可方便快速的签名。使用xml格式配置签名密钥,可以配置多个签名密钥。开原创 2021-01-16 18:54:12 · 8736 阅读 · 8 评论 -
Android:So库适配简单总结
前言日常开发我们经常会使用到第三库,涉及到底层的语音,视频等都需要添加so库。而so库的体积一般来说非常的大,不搞清楚随意添加会导致apk体积暴增。本文只做一个简单的学习总结。强烈建议阅读文章:为何大厂APP如微信、支付宝等只适配了armeabi-v7a/armeabi?CPU架构Android目前支持以下7种ABIs(Application Binary Interface的缩写,即应用二进制接口):mips, mips64, X86, X86–64, arm64-v8a, armeabi,原创 2020-08-21 16:28:44 · 3829 阅读 · 0 评论 -
Android中常用的设计模式简单总结
1.单利模式保证一个类仅有一个实例,并提供一个访问它的全局访问方法。 Android中的系统级服务都是通过容器的单例模式实现方式,以单例形式存在,减少了资源消耗。 2.建造者(Builder)模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 链式结构代码通常会采用建造者(Builder)模式实现。 如AlertDialog.Builder等。3.适配器模式将一个原创 2017-10-10 20:04:02 · 724 阅读 · 0 评论 -
MVP模式&简单实例
网上关于什么是MVP模式的文章,一搜一大堆。这里也不班门弄斧了。MVP要素在MVP模式里通常包含4个要素: (1)View:负责绘制UI元素、与用户进行交互(在Android中体现为Activity或者Fragment); (2)View interface:需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测原创 2017-03-13 17:28:19 · 2952 阅读 · 0 评论 -
Android一键打包,上传,提交修改记录的黑科技
前言在Gradle中配置好签名文件相关信息,就可以实现一键打包,还可以自定义输出路径,修改Apk名称等,减少我们提测时的繁琐步骤。详情请看:Gradle实现一键签名打包即使我们配置好了Gradle,我们开发提测时仍需要进行如下三个步骤:修改版本号,重新编译,打包成新的Apk复制粘贴Apk,QQ、钉钉等发送给测试写几条修改记录,好让测试知道改了什么平时偶尔打包倒是没什么,但是到了测试周,测试问题一个接着一个,连续打包很多次的时候就会觉得特别烦。遇到网络不好传输文件慢的时候还特抓狂,更不要说原创 2020-06-08 18:36:39 · 1045 阅读 · 1 评论 -
Android Gradle实现一键签名打包
手动打包签名Build—>Generate Singned Bundle or APK—>APK Next选择你的密钥,填入key和两个密码,Next选择Build Variants,签名版本(V1必选,V2可选),FinishAS就会开始帮我们打包,打包成功后,右下角会有提示:APK(s) generated successfully for module ...原创 2020-04-23 16:01:15 · 5477 阅读 · 1 评论 -
Android8.0通知栏适配全面解析
参考Android通知栏微技巧,8.0系统中通知栏的适配渠道8.0系统后使用通知栏需要先创建渠道,多渠道可以设置渠道组进行管理。如果你项目的targetSdkVersion>=26,如果没有进行渠道适配,将完全无法弹出通知栏。如果targetSdkVersion>=26,且升级了Android核心库,那么原来的通知栏构造方法会显示为废弃方法,需要多传一个渠道Id,如果该渠道...原创 2020-02-12 21:44:09 · 3003 阅读 · 2 评论 -
Android xml布局:文本对齐
汉字在Android开发过程中为了美观效果,常常需要进行汉字对齐。如上图,为了两个汉字跟四个汉字一样对齐,一般的做法是直接用空格隔开。但是这样无法达到完美对齐的效果,因为一个空格的宽度≠一个汉字的宽度。1. xml布局中直接使用  (中文全角空格 (一个中文宽度)) <TextView android:layout_wi...原创 2019-11-14 16:48:26 · 1649 阅读 · 0 评论 -
Android shape半圆,1/4圆
半圆size:宽高比1:2是垂直半圆,宽高比2:1是水平半圆。corners:4个角的任意两个角度(不小于宽高最小值)相同,且在同一边(上下左右)<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" andr...原创 2019-11-08 16:37:12 · 6635 阅读 · 0 评论 -
Android悬浮框的实现
前言悬浮框常用于手机助手,应用内全局控制等场景。 今天就来介绍如何实现悬浮框。思路使用WindowManager可以在屏幕上添加自定义view。Android api23需要申请悬浮窗权限。由于悬浮框不受Activity影响,甚至程序关闭仍能存在,所以悬浮框运行在Service中。将悬浮框与Serivce的生命周期绑定就,通过stopService可以关闭悬浮框。...原创 2018-08-13 12:29:41 · 4325 阅读 · 1 评论 -
Android获取第三方程序的包名
前言有时我们需要在自己的程序调起第三方程序,这个时候我们就需要知道第三方程序的包名和入口界面的Activity。 下面我们介绍几种方式获取第三方程序的包名及程序入口Activity。1.使用adb指令获取配置了adb指令环境后,手机打开调试模式连接电脑(虚拟机也行)直接在命令行中输入如下指令:adb shell dumpsys activity activities 命令行会...原创 2018-08-10 15:12:49 · 7435 阅读 · 0 评论 -
Android输入法android:windowSoftInputMode属性使用总结
AndroidManifest.xml&lt;activity android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", &a转载 2018-07-11 10:41:03 · 1141 阅读 · 0 评论 -
Android监听用户行为操作(AccessibilityService)
前言今天我们将使用AccessibilityService实现:监听第三方程序的界面变化(监听第三方程序的启动的实现原理)。模拟点击第三方应用的按钮(自动抢红包程序的实现原理)。监听第三方程序的点击事件。如果要测试的第三方应用不为自己的,则需要获取第三方应用的包名,当前Acvtivity等信息。可以参考: Android获取第三方程序的包名模拟程序我们先写一个模拟...原创 2018-08-13 18:08:49 · 15157 阅读 · 8 评论 -
Android 十六进制颜色码控制颜色百分比透明度
格式: android:background=”#XXxxxxxx”说明: 半透明颜色值不同于平时使用的颜色,半透明颜色值共8位,前2位是透明度,后6位是颜色。下面是透明度说明表,供大家参考不透明100%FF 95%F2 90%E6 85%D9 80%CC 75%BF 70%B3 65%A6 60%99 55%8C半透明...转载 2018-07-10 17:11:29 · 977 阅读 · 0 评论 -
Android Fragment嵌套Fragment使用ViewPager时不显示
问题如下图,父Fragment嵌套子Fragment在切换过程中部分子Fragment不显示。解决方案原来的子Fragment中FragmentPagerAdapter的初始化使用的是getFragmentManager() ... new FragmentPagerAdapter(getFragmentManager()) ...百度解决方案后得知:把ge...原创 2018-06-28 12:27:55 · 2685 阅读 · 0 评论 -
Android自定义View:倒计时按钮(获取验证码按钮)
效果图CountDownTimer类Java自带的倒计时器类,使用方法如下:继承该类,初始化参数super(millisInFuture, countDownInterval);//参数依次为总时长,和计时的时间间隔重写两个方法onTick(long millisUntilFinished) //计时过程中执行的方法和onFinish() //计时结束执行的方法。使用:T...原创 2018-06-26 17:12:10 · 1480 阅读 · 0 评论 -
Android 自定义输入软键盘
前言在日常开发中,有的时候我们需要用户输入指定范围的内容,除了给与充分的文本提示,更加人性化的就是定制一个自定义键盘。Android的自定义键盘常用于密码输入时的安全键盘,比入支付宝支付时。如上图,在输入体温时,弹出一个自定义的体温键盘,这样既能人性化服务,也能规避绝大多数非法数值的输入。实现Keyboard官方上对Keyboard的解释:加载键盘的XML描述并存储键的属性。键...原创 2018-11-28 18:21:08 · 3891 阅读 · 1 评论 -
Android自定义View:带百分比的圆形进度条
效果图话不多说,上效果图。继承原生ProgressBar,中间有数字百分比原生的ProgressBar是一个不断旋转的空心圆环。我们只需要:用宽度/2减去旋转圆环的宽,得到中间空白部分的圆的半径,画一个圆。然后再根据进度画出百分比字体即可。public class NumberProgressBar extends ProgressBar { /** ...原创 2018-05-03 17:45:08 · 3849 阅读 · 0 评论 -
Android 校正系统时间的三种解决方案
前言在开发过程中我们常常需要获取系统时间。 Android系统的自动确认时间,是由系统通过访问厂家的NTP服务器的时间,然后修改后得到的。 所以当没有网络或者在内网环境下的时候,系统无法访问到NTP服务器,便会造成系统时间错误。 所以这个时候我们就需要程序去修改系统的时间,或者获取一个正确的时间来代替系统时间。 NTP服务器【Network Time Protocol(NT...原创 2018-08-30 19:23:21 · 43045 阅读 · 2 评论 -
Android 详解Gradle(3.1.4)实现多渠道打包
前言在日常开发中,不同平台,不同客户,我们需要打包不同的版本,有可能还要进行一些显示上的改动。 如果多达几十个版本,我们一个个替换更改,是很让人抓狂的。 因此我们可以通过build.gradle配置,实现多渠道打包,一劳永逸。问题仅通过build.gradle配置,不能在代码中用if-else、swith等实现如下四个问题: 1、在同一台手机上能够同时安装debug版本和re...原创 2018-08-31 16:53:43 · 2359 阅读 · 0 评论 -
AndroidStudio配置settings.gradle在工程中构建多个项目
前言用Eclipse开发过的都知道,Eclipse在一个工作空间内允许创建多个项目(Project),多个工程之间查看代码,相互引入非常的方便。 而AndroidStudio(AS),则没有工作空间的概念,取而代之的是Project+Module的模式。虽然也很方便,但是在Module之间的分类管理上则做的不好,很多时候写一些小demo就要创建一个新工程,非常的麻烦。效果 ...原创 2018-09-04 13:05:51 · 12303 阅读 · 1 评论 -
Json与List的相互转换
问题由来:最近由于做一个项目,项目的一个功能就是根据Listview的内容生成一个二维码,然后扫描二维码获取list,再重新显示listview。核心就是: list—->生成二维码——>获取二维码—–>获取list####生成二维码的方法: http://blog.csdn.net/demonliuhui/article/details/52948696由于生成二维码的参数类型是S原创 2016-10-27 19:54:29 · 150440 阅读 · 10 评论 -
Android自定义View:仿企业微信,钉钉实现倾斜水印效果
问题企业微信和钉钉的部分页面有倾斜角度显示用户信息的水印,本文模仿实现效果如下:思路1.根据要显示的文字内容,绘制图片,然后将画布旋转-45°,生成bitmap。2.获取要显示水印的Activty的RootView,在RootView上添加一个view用于显示水印图片。3.根据需求给view布局文件设置透明度,android:alpha="0.8"实现WaterMarkUtil.k...原创 2019-06-11 16:25:13 · 3510 阅读 · 0 评论 -
Android RecycleView实现横向,纵向都可滑动的列表
问题1.RecycleView默认是纵向滑动的,可以通过setOrientation(LinearLayoutManager.HORIZONTAL)设置为横向滑动。 //指定列表布局方式,默认是纵向垂直 recycleView.setLayoutManager(new LinearLayoutManager(this)); //指定列表线性布局,横向水平...原创 2019-06-11 15:05:14 · 10382 阅读 · 2 评论 -
Android RelativeLayout中控件叠加显示的问题
问题在如下几个场景我们需要控件的叠加显示:可滑动界面(ScrollView,ListView等)固定一个不会跟随滑动的控件。设置了visibility属性的控件,当它需要显示的时候总是显示在最上层,而又不影响其他控件的位置。碰到这些情况使用RelativeLayout往往是最优解,问题的核心是:控件的叠加显示的先后顺序。方案1.优先级在xml布局文件中使用RelativeLayo...原创 2018-11-27 16:16:10 · 11011 阅读 · 1 评论 -
Android RecyclerView动态addView错乱解决方案
问题总所周知,RecyclerView上下滑动造成数据错乱是一个非常令人头疼的问题。不仅如此,在RecyclerView中动态addView,也会如此,如下图: //RecyclerView中给RadioGroup动态添加RadioButton RadioGroup rgEvaluate; for (EvaluateItem item : evaluate...原创 2018-10-17 10:58:48 · 6001 阅读 · 5 评论 -
Android 收集程序崩溃异常信息
前言在日常开发中,如果遇到Android程序崩溃,我们只需要打开AndroidStudio的控制台的Logcat便能查看到程序的崩溃信息。可是当程序上线后,如果出现程序崩溃的情况,我们可能很难找到问题。这就需要我们的程序能够自己收集到崩溃的异常信息,然后再适当的时候将这些信息上传到服务器,然后我们获取到这些异常信息后,在下个更新的版本将其修复。思路Android使用Thread.Unca...原创 2018-09-21 11:03:28 · 2274 阅读 · 0 评论 -
AndroidStudio+Nexus3.x搭建Maven私服
前言dependencies { ... implementation 'org.litepal.android:core:2.0.0' //数据库 implementation 'org.greenrobot:eventbus:3.1.1' ...}作为一名Android开发者,像上面一行代码导入一个框架的方法,肯定很熟悉。 这些框架的代码就放在...原创 2018-09-06 12:18:40 · 1670 阅读 · 0 评论 -
AndroidStudio最新打包jar和aar的方法
在日常开发中我们常常需要引用其他项目的代码。通过gradle,maven等远程导入。复制对应的Library到自己的Project下,直接导入Library。用AndroidStudio打开代码,然后打包成jar或者arr,复制到项目的libs文件夹下,导入即可。方法1适合开源项目,否则需要通过购买GitHub私有项目或者搭建私服来使用。方法2虽然简单,但是如果多个Project多次使用则非常麻烦。方法3则是打包一次,直接复制jar或arr就可多次使用。原创 2018-09-05 10:44:39 · 17085 阅读 · 3 评论 -
Android自定义View:9宫格图形手势解锁
效果图话不多说,上效果图。9宫格图形解锁的实现点9宫格图形解锁的操作就是在9个点上进行的,所以我们先定义一个点类,该类主要用于存储点的信息:坐标,状态,位置。 public class Point { //正常状态 public static int STATE_NORMAL = 0; //选中状态 public static...原创 2018-05-03 13:02:48 · 2008 阅读 · 0 评论 -
Androrid 应用打包release版时关闭log日志输出
作者:王鹏程Orange链接:https://www.jianshu.com/p/4b61391a665f來源:简书 我们在Android开发的过程中,经常会使用Log来打印日志,方便观察结果输出,但是当我们打包应用,需要发布到应用市场时,显然是不能输出这些信息的。肯定不能采取批量删除或注释这种暴力的方法,下面我主要介绍三种方...转载 2018-03-02 11:48:22 · 2169 阅读 · 0 评论 -
Android在一个activity改变另一个activity的组件
application相关知识 Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在...转载 2017-01-17 00:36:40 · 4809 阅读 · 0 评论 -
Android性能优化之:XML布局文件优化
Android中XML布局文件的使用非常频繁,在加载XML布局的时候,如果对XML文件其进行优化,将会提高加载的效率。HierarchyViewer工具再开始介绍之前先说一下HierarchyViewer工具的使用。 不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计。HierarchyView原创 2017-07-05 22:45:53 · 3076 阅读 · 0 评论