自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Android - 分享功能,截图并保存图片到本地相册(适配小米

分享功能,截图并保存图片到本地相册

2023-03-02 17:21:59 1855 1

原创 Android - 使用GSY实现视频播放和画中画悬浮窗

现完成功能: - 悬浮窗区分横屏竖屏两种尺寸 - 悬浮窗可以在页面上随意拖动 - 在播放视频时按返回键/Home键/离开当前页时触发开启 - 悬浮窗显示在退到后台/在应用内/桌面 - 带播放进度开启悬浮窗,带播放进度回到应用内页面 - 权限:每次开启前判断有无权限,没权限并且请求过就不开悬浮窗

2022-12-07 12:56:44 2464 1

原创 Android - 判断按下Home键或进入后台

参考链接说从一个activity依次调用startActivity,finish关闭自己,启动一个新的activity时,onUserLeaveHint也会被调用…需要在启动activity时往intent中加上flag:FLAG_ACTIVITY_NO_USER_ACTION。onUserLeaveHint就不会再被调用了(不过我没复现,不加上也正常)(不属于用户的选择),它就不会被调用。

2022-11-04 11:44:01 1193

原创 解决导入依赖报错找不到Execution failed for task ‘:app:mergeAfatDebugNativeLibs‘.

阿里:https://developer.aliyun.com/mvn/search(更推荐)获取对应的第三方库的jar包/aar包放入app的libs文件夹下。.jar或者.aar 是我们需要的,字节码文件,用来执行。换一种导入方式就不报错了,正常运行。奇了个怪,无了个雨。//ps: 若需要对第三方库的源码进行修改,可以用。哒吧嗒我只能看懂他找不到资源…

2022-11-04 11:17:16 2513

原创 初次使用Gitlab上传项目

登录并配置账号、上传项目代码

2022-10-07 16:59:58 1598

原创 解决Android Gradle plugin requires Java 11 to run. You are currently using Java

Android Gradle插件需要Java 11才能运行。您目前使用的是Java 1.8。参考:https://www.jianshu.com/p/b548831fd21d。

2022-09-25 13:40:37 4964

原创 AS常用插件

根据 xml 自动生成 style 代码的插件。需要把要生成 style 的代码 copy 到 styles.xml 中,选中进行设置。根据布局文件快速生成对应的Activity,Fragment,Adapter,Menu。速度较快的 Android 模拟器,可以在 Android Studio 中直接开启。一个帮助开发者自动生成样板代码的 AndroidStudio 插件。可以将代码中的字符串写在string.xml文件中。可以为MVP生成接口以及实现类,解放双手。(比如alertDialog)

2022-09-24 21:17:10 1145

原创 Android学习-Git应用协同开发笔记

主分支pull,切换分支a ,再pull,检查代码没有问题,切换回主分支,再合并分支a过来,再push。解决:一般开发新功能也会新开一个分支,老功能有问题切回该分支改代码测试提交,不影响新开发代码的运行。此时有开发到一半的内容又不能舍弃。其他人先保存自己当下的分支代码,再切主分支pull下最新代码,再切分支a把主分支代码合并过来。合并步骤:先在自己分支a拉一下,切换到别人分支b上再拉,再切换回自己分支a,再合并b。队友去切换主分支,pull拉代码,切换回分支a,把主分支的内容合并到分支a。.........

2022-08-29 00:13:57 1077

原创 Android - JNI环境搭建和简单案例入门

在android的JNI中,要先将相应的C/C++语言打包生成.so文件(c++的函数库),然后导入到lib文件夹中供java调用。需要的工具:Android 原生开发工具包 (NDK)CMake:一款外部构建工具,可与 Gradle 搭配使用来构建原生库。1)打开 Settings>Appearance&Behavior>System Settings>Android SDK>SDK Tools ,勾选Show Package Details ,选择版本下载,大概1G内注:如果选择23.x及以上版

2022-07-26 20:48:29 1492 1

原创 Android - 获取移动端设备ID标识,分情况

设备ID,就是一串符号(或者数字),映射现实中硬件设备。如果这些符号和设备是一一对应的,可称之为“唯一设备ID"。用于蜂窝网络中唯一确定一个用户,存在SIM卡,双卡手机只返回一个IMSI,用户换手机、换卡不换号,都不变。拿不到设备的IMEI的可以拿android_id,但是!不幸的是,Android平台没有稳定的API可以让开发者获取到这样的设备ID。不需要任何权限,64bit的取值范围,唯一性算是很好的了。2)不同签名的APP,获取到的AndroidID不一样。双卡双待的手机有两个IMEI号。......

2022-07-19 14:20:11 4535

原创 Android - 城市/单项/国家区号选择器基础使用 及 使用国际区号json文件

城市/单项/选择器基础使用 及 使用国际区号json文件

2022-06-24 17:45:19 81248 1

原创 Android-仿QQ表情库、表情混合文字聊天图文

实现仿QQ表情库。点击表情转换为对应特殊字符串放入EditText,在消息列表中将特殊字符串转换为表情。在Application中加载表情对应文字数组、表情对应图文集合3. 实现表情列表xml文件:item_faceimage_channel.xml自定义点击事件监听回调:Grid适配器初始化RecyclerView二、图文混合展示1. 通过自定义控件将特殊字符串转图片2. 处理对齐参考文章:https://blog.csdn.net/qq_37210413/art......

2022-06-06 10:56:18 871

原创 Android - 制作聊天气泡.9格式

设置聊天系统对话页面的文字背景气泡,要让气泡背景随着内容多少来拉伸,需要用到AS中的.9.png图片格式。

2022-06-01 18:52:34 1182

原创 Android - 设置Switch不能手动切换 只能代码切换

1.自定义SwitchCompat,,屏蔽父类的setOnCheckedChangeListener和setOnClickListene@SuppressLint("AppCompatCustomView")public class NotClickableSwitchCompat extends SwitchCompat { OnClickListener l; public NotClickableSwitchCompat(Context context) { sup

2022-05-25 10:54:04 1308 1

原创 Android - 指纹识别API示例

– 前言需求说明:app经常要验证码验证用户手机号保证安全性,现在想接入指纹识别来代替验证码验证,不支持指纹识别的设备照常用验证码。了解APIAndroid在23(Android M 6.0)新增了对指纹识别的硬件支持,应用可以通过调用系统Api实现指纹验证相关功能,相对于传统的手势,密码等验证方式,指纹验证安全性更高,速度也更快。Android 23(Android M 6.0)新增 指纹识别Api:FingerprintManager,开发者通过该Api打开指纹认证时,系统仅会打开设备的指纹模

2022-05-23 18:19:08 2013

原创 Android - WebView接入H5客服&照片/视频上传

webView加载H5,主要是解决上传图片和视频的问题。1)Activity定义一些常量变量 private static final int REQUEST_CODE_PERMISSION_CAMERA = 0x03; private static final int REQUEST_CODE_CAMERA = 0x02; private static final int REQUEST_CODE_ALBUM = 0x01; private ValueCallback<U

2022-04-20 11:08:32 1998

原创 解决json数据为多种类型,将LinkedHashMap转实体

前提:后端同志在response中返回多种类型,失败时返回String,成功时返回数据实体用于前端显示。都是用Data字段接收:public class RootBean<T> { private int StatusCode; private T Data; ...}一、寻找原因一开始想的很好办嘛,成功时将存有json数据的data转换成实体类就好啦:new Gson().formJson(jsonString,实体类.class)不料接收的data是

2022-04-08 15:48:20 6517

原创 Android Stuido 压缩项目前清理无用文件

需要将项目文件夹压缩转发给其他小伙伴前,删除不必要的文件,减少其大小。可以删除的缓存文件(缓存文件只是加快AS编译,删除后第一次编译会很慢):/app/build文件夹/build/.gradle Gradle缓存/.idea/*.iml 所有后缀为.iml的文件,IDE的工程配置文件/app/release 项目的配置信息,包括历史记录,版本控制信息/local.properties/.DS_Store/.externalNativeBuild参考链接:h

2022-03-25 18:30:12 2680

原创 Android-EditText、TextView、TabLayout基础使用

一、监听事件1. 监听输入框内容需求:只能输入有限位小数,且限制最大值etNum.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String num = etNum.getText().toString().t

2022-03-25 17:56:52 4155

原创 Android图表控件MPChart-柱状+折线组合图表基本使用

一、效果图双模式效果:柱形图加折线图,双y轴,从右向左滑动…二、实现代码1. 加入依赖implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'2. 布局中加入组合图标签<com.github.mikephil.charting.charts.CombinedChart android:id="@+id/chart" android:layout_width="ma

2022-03-24 15:41:09 9889 2

原创 Android问题解决-As Error:Failed to find configured root that contains老机型摄像头拍照闪退

情景:引用第三方包,启动它的拍照功能的时候低版本设备直接闪退原因:FileProvider无法获取外置SD卡Android提供FileProvider类来供应用之间共享数据。一、解决方法:清单文件中设置provider标签<application>... <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.filep

2022-03-22 18:08:22 637

转载 Android-事件分发机制(事件流向层面)

前言:本文只是对大佬的文章做一个归纳,用于复习,建议看原文:https://www.jianshu.com/p/e99b5e8bd67b#1. 如果事件不被中断,整个事件流向是一个类U型图,事件按照U型完整走完。从上往下Activity–>ViewGroup–>View 调用dispatchTouchEvent(),一直到View,再从下往上View–>ViewGroup–>Activity调用onTouchEvent()2. dispatchTouchEvent() 和 on

2021-12-13 16:42:58 177

原创 Android-事件分发机制(源码层面)

事件是如何到达Activity的?我们的应用界面一般会有多个view树,我们的activity布局就是一个view树、其他应用的悬浮窗也是一个view树、dialog界面也是一个view树、我们使用windowManager添加的view也是一个view树等等。WindowManagerService的简写)管理的是viewRootImpl。手指触摸屏幕时,即产生了触摸信息。这个触摸信息由屏幕这个硬件产生,被系统底层驱动获取,交给Android的输入系统服务:InputManagerService,也

2021-12-08 17:54:34 1679

原创 Android:UI布局加载机制解析

一.分析层层调用的关键代码设置布局文件:每个Activity的onCreate()中 setContentView(R.layout.xx)。实际是调用Window抽象类的方法:this.getWindow().setContentView(R.layout.xx)。Window唯一实现类PhoneWindow实现的setContentView():关键调用方法:1)installDecor()    1> 创建布局容器 : 先创建顶层V

2021-11-25 15:51:29 1797

原创 Android:AsyncTask基本使用(下载文件)

我们一般用Thread+Handler实现多线程,将耗时操作运行在另一线程中,任务完成后通过Message通知主线程的Handler进行UI更新。需要编写Thread和Handler。为了让代码更加统一,Android提供了助手类AsyncTask方便我们使用,其底层也是Thread+Handler。1. 创建子类时需要指定三个泛型类型:Params, Progress, ResultParams:AsyncTask执行任务的参数的类型Progress:在后台线程处理的过程中,可以阶段性地发布结果的

2021-10-13 16:37:49 275

原创 解决万恶的open failed: ENOENT (No such file or directory)/(Operation not permitted)

前提:发现Android 11 上传图片及下载文件都失败,报错日志:open failed: ENOENT (No such file or directory)原来是Android 11访问文件资源管理器需要加上特殊权限: MANAGE_EXTERNAL_STORAGE 文件管理权限之前申请权限是通过Dialog展现给用户,而Android 11以后通过 Activity 展现给用户看(Intent跳转)。1)目标sdk修改为30:targetSdkVersion 302)清单文件注册:<

2021-10-13 14:53:52 17815

原创 Android:Retrofit+RxJava网络框架+MVP架构 初体验

一、工程目录基础的一级文件夹有app(基类)、service(mvp+网络)、ui、util、view(自定义View)。二、构建网络请求框架1. 导入依赖dependencies { // Okhttp implementation 'com.squareup.okhttp3:okhttp:3.10.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0' // Retrofit (Gso

2021-09-16 18:47:51 317

原创 Android-彻底解决启动白屏、跳转页面白屏!

背景:项目在启动页面老是有一瞬间白屏,还有切换日夜间模式时finish栈内所有Activity再启动MainActivity时会白屏。1. 初步解决办法: 设置窗口的背景色为启动页。虽然看不到白屏了,但还是有点丑,怪怪的…<style name="MainSplashTheme" parent="AppTheme"> <item name="android:windowBackground">@mipmap/splash_pic</item></style

2021-08-30 15:59:34 5219

原创 Android-VideoView启动页视频,8.0崩溃解决

0. 准备视频.mp4放在res/raw内1. 布局文件:activity_launch.xml宽度自适应大小居中,高度占满全屏。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_pare

2021-08-26 16:18:46 514

原创 Android问题解决-部分机型上传图片失败

今天许多新用户反馈app无法上传图片,都是Android10及以上。ios能正常上传,且看不到后台日志。第一步:复现问题用测试机能够正常上传,没有和用户同机型的真机无法调试。于是上云真机(远程调试)复现情况。推荐云真机平台:https://console.cloud.tencent.com/wetest/cloudphone/remote 腾讯实名免费半小时https://cn.devecostudio.huawei.com/console/testservice/remote 华为实名免费

2021-08-18 16:50:05 3017

原创 Android apk报毒漫长的解决之路(已有对策)

事情是这样,在公司项目某一版本发布后过了两天,大面积用户安装提示风险应用,应用默认禁用网络,而且桌面图标上有很醒目的红色感叹号。 第一次碰到报毒的情况,我们先去查毒网站(virustotal和腾讯在线查毒)查毒,查到是a.gray.Bulimia.a灰色贪食症,网上一搜才知道好多人也会突然报此毒,甚至非上线应用也会。首先我们先去除了广告,用腾讯加固新发了一版,撑了几天后又报毒了。发版前打了几个包备着,发现只有放上线的apk有毒,本地的查毒没问题,猜想是达到一定下载数量才被查毒。然后我们向腾讯

2021-08-17 12:09:27 29049 3

原创 Android中MVC、MVP和MVVM及实例

三种软件架构的框架(设计的典范)各自有什么特点?有什么区别?一、MVC1.组成及作用Model:模型(提供并处理数据)View:视图(渲染界面,数据可视化)Controller:控制器(MV的连接器,负责用户交互,控制程序流程和业务逻辑的处理)2.工作原理当用户触发事件的时候,view层发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上#mermaid-svg-Lh6ahpnMcP8l7v3w .labe

2021-08-10 16:13:15 324

原创 Android面试-LaunchMode及Task工作模式(扔物线笔记)

切到后台时看到的是任务列表,会列出已存在的Task任务,Activity存活在任务栈中。一、Activity的LaunchMode有四种:standard (默认),每次都新建一个Activity(在当前App的Task)singleTop,当此Activity在栈顶时就不新建,不在栈定就新建(在当前App的Task)singleTask 全局单例,保证只在一个task的栈里有一个实例。singleInstance 独占,在单独的Task里,栈里只有这一个activity。二、单独讲讲跨Ta

2021-08-02 11:43:03 626 3

原创 Android日间模式夜间模式切换(无需重启)

Android夜间模式切换第零步:添加依赖在app 的bulid.gradle 中添加dependencies { implementation 'com.android.support:appcompat-v7:27.1.1'}第一步:添加夜间模式资源,以-night结尾作用:系统在不同模式会加载对应文件夹下的文件,两种模式命名相同值不相同drawable -> drawable-nightvalues -> values-night①创建夜间资源文件,②修改夜间

2021-07-23 18:18:56 9883

原创 Android:数字验证码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1.验证码类 FourFiguresNumberCode.java2.xml文件放占位的ImageView3.java文件中使用验证码最后前言Android随机生成多位数字验证码1.验证码类 FourFiguresNumberCode.java代码如下:public class FourFiguresNumberCode { //随机可选的字符数组 private static final cha

2021-06-22 14:14:09 641

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除