
Android技巧
xiayiye5
我的GitHub地址:https://github.com/yhsh
和 https://github.com/xiayiye5
展开
-
Android开发之截图当前view并保存到相册的标准姿势
原因:java.lang.IllegalStateException:在调用 drawToBitmap() 之前需要对视图进行布局。注意此方法不能在打开view的时候立马调用会抛出如下异常。方法分为2种一种是Java版本,一种是kotlin版本。Kotlin版本截图View。Java版本截图View。再看看怎么保存到相册(可查看此链接的方法三。原创 2023-04-10 17:10:03 · 1387 阅读 · 1 评论 -
Android开发之ConstraintLayout代码动态控制约束布局-已踩坑(跟Compose的约束布局基本一个套路)
需求如上图我需要手动点击按钮改变文字的位置,在约束布局中唯一快速想到的我就是动态设置。兄弟们上面的坑我已经踩完了,都已注释,具体可以看注释,在此非常感谢二位大佬无私分享。原创 2022-08-26 06:15:00 · 4940 阅读 · 0 评论 -
Android开发之最简单的跑马灯效果之TextView实现(2015年的代码到现在依然适用)
老套路献上效果图 测试环境android9.0系统代码非常简单只需要在TextView中增加几个属性即可最重要的是下面的四个属性android:marqueeRepeatLimit="marquee_forever"这个属性可加可不加都可以再看下完整xml代码可以了非常简单,这个代码是15年的代码,没想到到今年2022年了依然适用。目前只在android9.0测试通过,其它版本请自测......原创 2022-07-06 10:44:29 · 1131 阅读 · 0 评论 -
Android开发之最新Android Studio推送代码到最新GitHub教程 | Android Studio绑定GitHub | AS令牌登录GitHub | 创建GitHub令牌
现在在AS上面不建议使用密码登录GitHub,官方推荐使用令牌登录。方法也很简单1.登录GitHub后打开下面的网址https://github.com/settings/tokens2.选择右上角的创建令牌3.选择令牌相关的属性,令牌名字,令牌有效期4.选择令牌的用途,然后点击创建令牌5.创建成功后会跳转到成功的页面,复制令牌此页面只出现一次不要关闭6.使用AS绑定GitHub7.将第5步中复制的令牌粘贴到下面输入框即可9.大功告成...原创 2022-04-30 19:04:40 · 1972 阅读 · 0 评论 -
Android开发之限制输入框长度 | 限制EditText输入长度 | 限制AppCompatEditText长度的方法
直接上代码package cn.yhsh.keyeventdemo;import android.text.InputFilter;import android.text.Spanned;/** * @author xiayiye * @date 2022/4/2 13:23 */public class SearchKeyWorldLengthFilter implements InputFilter { private final int mMax; pu原创 2022-04-11 13:43:13 · 3109 阅读 · 0 评论 -
Android开发之android录制视频功能
录制视频主要使用到MediaRecorder这个类。代码也不多很简单我就直接粘贴下if (btRecord.text.toString() == "录制") { camera = Camera.open() //设置录制界面的方向 camera.setDisplayOrientation(90) camera.unlock() mediaRec原创 2022-02-15 00:45:00 · 5474 阅读 · 1 评论 -
Android通过adb命令传参给APP的方法
老套路先看图说下原理:使用adb命令启动server然后传递参数,service拿到参数后可以根据需求实现模拟控制APP看代码package cn.yhsh.adbinputserver.service;import android.app.NotificationChannel;import android.app.NotificationManager;import android.app.Service;import android.content.Intent..原创 2022-02-12 00:15:00 · 2569 阅读 · 0 评论 -
Android开发之将Android SVG 转 VectorDrawable矢量图的方法
Android SVG to VectorDrawable介绍两种方法如下方法一使用在线的三方网站即可我推荐两个:http://inloop.github.io/svg2android/http://svg.zhangningning.com.cn/1.先下载svg:blob:https://www.figma.com/2f2f8ea9-f5bf-4339-ba9c-0e262a3dd0e32.将下载的svg图片拖进去会自动转换3.这样就将svg图片转成VectorDra..原创 2021-09-22 13:56:37 · 4810 阅读 · 0 评论 -
Android开发之maven私服打包和上传gradle配置
uploadArchives { repositories { mavenDeployer { Properties properties = new Properties() InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream(); properties.load(inputStre.原创 2021-09-17 09:58:04 · 312 阅读 · 0 评论 -
Android开发之显示截图动画效果直到消失
public void showScreen(Uri uri, String path) { // 显示当前截图 mLlSnapshot.setVisibility(View.VISIBLE); mIvSnapshot.setImageURI(uri == null ? Uri.parse(path) : uri); mIvSnapshot.setOnClickListener(v -> { // 打开截图 .原创 2021-08-19 10:04:19 · 663 阅读 · 0 评论 -
Android开发之设置Dialog外部页透明的方法亲测可用
老套路先看默认的弹框再看处理后透明的弹框实现方法也很简单,只需要给dialog设置一个透明的主题,主题很重要! <style name="transparent_dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFl..原创 2021-07-21 17:09:36 · 922 阅读 · 1 评论 -
Android开发之在Fragment和Activity页面拍照需要注意的地方
先贴出Google官方文档:Google官方拍照文档感觉原创 2021-07-05 12:32:14 · 846 阅读 · 2 评论 -
Android开发之刷新图片到相册 | 刷新视频到相册的方法区分发广播刷新方法
我们很多app会有报讯图片和保存视频,保存成功后一般在最近文件或者相册就能看到了,这个需要我们在保存文件后自行刷新到相册中,以前老版本方法通过广播刷新方法在API29中已经废弃了无法使用,咱们提供了新版本方法如下图://说明第一个参数上下文,第二个参数是文件路径例如:/storage/emulated/0/1621832516463_1181875151.mp4 第三个参数是文件类型,穿空代表自行根据文件后缀判断刷新到相册 MediaScannerConnection.scanFile(conte原创 2021-06-11 16:46:59 · 2956 阅读 · 2 评论 -
Android开发之LayoutInflater.from(context).inflate()方法参数介绍解决RecyclerView加载布局不全的问题
咱们先看下item的xml布局高度为64dp<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="64dp" android:layout_marginTop="1dp"原创 2021-06-02 10:51:11 · 2170 阅读 · 0 评论 -
Android开发之约束布局平均分布|ConstraintLayout平均分布|约束布局均匀分布|ConstraintLayout均匀分布
老路子先看效果图1.先画7个小球会全部重叠在一起<?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-auto" andro.原创 2021-05-27 12:38:36 · 8069 阅读 · 1 评论 -
Android开发之高仿百度地图底部滑出菜单
老套路上图:底部菜单滑出效果如上图:首先依赖三方库implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.3.0'再看主页面的布局<?xml version="1.0" encoding="utf-8"?><androidx.coordinatorlayout.widget.Coordinato原创 2021-05-08 14:18:40 · 1111 阅读 · 1 评论 -
Android开发之Android studio4.1查看app布局的方法 | 使用布局检查器和布局验证工具调试布局
老套路先上图:老版本和新版本查看方法不一样,我这个是4.1的版本。但是大部分菜单都差不多所以先看我这个版本查看布局方法如下:选择查看app布局的进程即可总结:菜单栏选择Tools-LayoutinSpector然后选择要查看app的进程即可在此感谢此博主提供方法:博主链接...原创 2021-04-26 20:10:14 · 2630 阅读 · 0 评论 -
Android开发之通过反射获取全局的application
直接是那个代码package cn.xiayiye5.xiayiye5library.utils;import android.annotation.SuppressLint;import android.app.Application;/** * @author : xiayiye5 * @date : 2021/1/15 18:20 * 类描述 : 通过反射获取全局的application */public class XiaYiYe5Utils { private原创 2021-04-19 09:53:04 · 2487 阅读 · 1 评论 -
Android开发之自定义view预览不显示的问题
老套路上图看:如何解决呢?只需要我们点击右上角的感叹号查看不显示的原因即可3.查看不显示的原因4.查看具体报错代码以及报错解决方法5.自行排查自定义view中有哪些没有初始化的数据进行修改或者在没有初始化数据的上面按照上一步骤提示解决即可如下图:解决方法,只需要在没有初始化的数值上面进行代码忽略即可这样编辑器就可以显示自定义view的预览页面博主直达非常感谢博主:...原创 2021-04-06 10:01:10 · 6353 阅读 · 0 评论 -
Android开发之API29以上Environment.getExternalStoragePublicDirectory废弃的问题
在API29的时候就会提示API失效如下图:Environment.getExternalStoragePublicDirectory代替方法也很简单,我们点进去看源码就会看到注释信息给我们的提示的替代方案:然后我分别打印了下这些对应代码的目录如下图:总体目录代表的是根目录/Android/data/包名/file上面目录对应的代码如下:File externalFilesDir1 = getExternalFilesDir(Environment.DIRECTORY_AL原创 2021-03-10 09:56:47 · 5103 阅读 · 3 评论 -
Android开发之使用Android studio进行两个项目合并的方法
在项目中我也是第一次遇到要将两个项目的代码进行合并,同事们都会使用source tree这个桑发工具进行合并,但是我可能不太喜欢为了合并又安装哟个软件,于是乎研究了下方法也很简单。1.添加要合并的仓库地址:2.打开分支3.刷新所有仓库分支3.开始合并分支方法一:方法二:找到要拉取的项目blue,然后选中要被合并的分支main,点击pull即可非常简单吧使用Android studio自带的插件!注意事项:1.如果项目项目...原创 2021-02-23 09:55:21 · 5769 阅读 · 0 评论 -
Android开发之RadioButton位于文字右边的显示方法
老套路看图:实现思路:1.将左边的选择按钮隐藏通过android:button="@null"2.设置右边的图片即可通过android:drawableRight="@drawable/btn_radio_is_check"看下核心代码:<?xml version="1.0" encoding="utf-8"?><RadioGroup xmlns:android="http://schemas.android.com/apk/res/android" a原创 2021-02-17 20:17:57 · 1211 阅读 · 0 评论 -
Android开发之实现每隔一段时间触发定时器android定时器
老套路看图:每隔20秒重新触发实际上实现也很简单我们可以通过android原生自带的定时器完成,说下思路:1.首先实现android定时器开启触发2.在定时器结束的方法中再次触发开启定时器即可package com.wyze.mercury.common.utils;import android.os.CountDownTimer;import com.wyze.mercury.common.TimerListener;import com.wyze.platformki原创 2021-02-19 15:03:52 · 1173 阅读 · 1 评论 -
Android开发之快捷键Google官方版本包含Mac版本
Android studio官方快捷键区分Windows和Mac版本 说明 Windows/Linux Mac 常规 全部保存 Ctrl+S Command+S 同步 Ctrl+Alt+Y Command+Option+Y 最大化/最小化编辑器 Ctrl+Shi.原创 2021-02-08 10:12:56 · 162 阅读 · 0 评论 -
Android开发之黑科技安装APP无启动图标
老套路看图:实现方法很简单只需要在启动Activity清单文件配置data属性就好了: <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <data an.原创 2021-01-25 19:25:05 · 1202 阅读 · 1 评论 -
Android开发之RecyclerView嵌套ListView自动计算高度的方法
老套路看图:最外层是个RecylerView子布局里面的房屋描述信息是个listview根据后台返回字段动态显示的高度。解决思路:可以计算每个listview的子布局的高度相加起来就是整个listview的告诉。方法一:自定义ListView:package com.wiwj.itNew5iwork.view;import android.content.Context;import android.util.AttributeSet;import android.widg原创 2021-01-08 20:59:01 · 1222 阅读 · 0 评论 -
Android开发之自定义ImageView圆角图片的方法
老套路看图:实现方法非常简单,使用ClipPath切割就可以了:完整代码如下:import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Path;import android.support.annotation.Nullable;import android.util.AttributeS原创 2020-12-27 18:20:35 · 914 阅读 · 1 评论 -
Android开发之EditText输入框限制输入数字和字母的实现方式
老套路先看效果图:非常简单只需要在xml不居中添加一个属性就可以了:android:digits="0123456789qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM"完整如下: <EditText android:id="@+id/etLoginPwd" android:layout_width="match_parent" android:layout_heigh.原创 2020-12-22 13:11:02 · 1549 阅读 · 1 评论 -
Android开发之动态添加WebView实现进度条标题栏展示效果
老路子:看图说白了就是不用layout的xml写布局,直接用传代码手写布局实现上面的效果:代码如下:请将下面代码放到onCreate中动态加载布局即可 LinearLayout linearLayout = new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL); tvWebViewTitle = new TextView(this);// t.原创 2020-12-18 13:22:14 · 1818 阅读 · 0 评论 -
Android开发之通过WebView查看HTML源码的方法
老套路先看图:说下思路:通过android调用JS方法获取HTML标签等源码,核心代码就一行:view.loadUrl("javascript:window.local_obj.showSource('<head>'+" + "document.getElementsByTagName('html')[0].innerHTML+'</head>');");这里面坑也挺多的,我代码里面都有坑的注释下面是全部代码:p原创 2020-12-10 10:20:30 · 2067 阅读 · 0 评论 -
Android开发之SDK开发获取资源id报错的问题
我们在开发SDK的时候有时候需要兼容Eclipse版本和AS版本,AS版本就不说了没多大问题,主要是Eclipse版本会有问题。当开发之使用Eclipse开发的时候接入jar包(AS打包成aar,解压获取Jar)的时候会报错资源id找不到,这是因为aar里面的资源id生成了唯一的int值,但是单独将aar解压拿出jar,去找id的值的时候会找不到的,解决办法有:利用反射:工具类已封装好package com.mchsdk.paysdk.utils;import android.content原创 2020-11-09 13:20:55 · 834 阅读 · 0 评论 -
Android开发之在任意Activity在广点通页面添加自定义布局在穿山甲页面添加任意布局
老套路看下效果图:上面是穿山甲的广告页面,需求是添加自定义布局到别人SDK的页面,SDK内部不支持这样方式。怎么办呢?思路:实际上我们可以换位思考下,如果能拿到这个广告页的activity页面,在这个拿到的activity页面添加自定义布局不就好了。看下如何获取当前activty:下面这个方法要在application中初始化 /** * 监听Activity变化 */ private void initActivityLifecycleCallback原创 2020-11-03 10:52:31 · 8553 阅读 · 0 评论 -
Android开发之EditText无法获取光标的问题
老套路看图:在上图红包个数那里是个EditText控件,当我删除数字后光标就无法显示了,看下我的xml写法: <EditText android:id="@+id/et_red_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight=原创 2020-10-15 11:22:40 · 605 阅读 · 0 评论 -
Android开发之自带阴影效果的shape
效果图:shape如下:<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <corners android:topLeftRadius="10dp"原创 2020-10-11 18:03:42 · 1251 阅读 · 0 评论 -
Android开发之ConstraintLayout(约束布局)一个控件位于一个控件右上角类似RelativeLayout实现效果
老套路看下效果图:(绝对的原创!!!!)实际上很简单,四个点对应上就行了,看代码:<?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-原创 2020-08-05 11:57:13 · 6542 阅读 · 0 评论 -
Android开发之将AndroidX项目改为非androidX(android.v7.support)的方法
老套路上图:看看我目前AndroidX依赖的库文件修改方法:1.打开gradle.properties文件将文件里面的下面两个属性android.useAndroidX=trueandroid.enableJetifier=true修改为falseandroid.useAndroidX=falseandroid.enableJetifier=false然后将项目中所有引用AndroidX包的包替换为support包即可,包括gradle依赖已修改成support包原创 2020-09-07 09:40:17 · 2024 阅读 · 3 评论 -
Android开发之Android Studio 3.6新特性之获取控件id的高级方式ViewBinding
一般获取id有如下几种方式:访问布局控件ID方式 优点 缺点 findViewById 系统提供有保障 特别繁琐代码量大 第三方注解 快捷简单 引用三方可能有不确定因素 kotlinx.android.synthetic 简洁明了方便 有空指针安全问题(可以引用整个项目的所有id) DataBinding 配置简单 ...原创 2020-05-05 14:40:46 · 2103 阅读 · 0 评论 -
Android开发Android studio之gradle打包apk重命名的方法
老套路,先看效果图:首先第一步在gradle里面写个获取当前时间的方法如下://获取时间的方法 GMT+8代表北京时间static def getNowTime() { return new Date().format("yyyy-MM-dd HH-mm-ss", TimeZone.getTimeZone("GMT+8"))}然后写重命名apk的方法: /**...原创 2020-02-24 13:20:56 · 2065 阅读 · 0 评论 -
Android开发中常用的注释图案
如下图:1.狮子/** * * ,. * ,_> `. ,'; * ,-`' `' '`'._ * ,,-) ---._ | .---''`-),. * ,' `. \ ; / ...原创 2019-10-08 10:00:22 · 839 阅读 · 0 评论 -
Android开发之java8 lambad表达式的使用
Java8支持lambad表达式,可以简化很多代码,在android中如何使用呢?很简单,首先安装Java8的jdk,然后在module里面的android子节点下面添加如下代码重新构建下即可 compileOptions { targetCompatibility 1.8 sourceCompatibility 1.8 }添加后会出...原创 2019-06-07 11:30:56 · 292 阅读 · 0 评论