- 博客(119)
- 收藏
- 关注
原创 Android设计规范及分辨率简介
设计给的2x和3x对应Androidandroid 1x 2x,dpi、ppi、dp、px、分辨率、@1x、@2x、@3x一款APP设计的从0到1之:Android设计规范篇切图常说的@1X@2X@3X是什么意思?Android适配的那些P事
2024-03-20 15:04:35 375
转载 RecyclerView导致父控件点击事件无效
最近有一个需求,RecyclerView外层嵌套了一个FrameLayout,想实现点击整个FrameLayout都能响应一个事件,结果给FrameLayout加上点击事件后,点击RecyclerView范围无效。可能是RecyclerView截获了click事件,阻止了点击的透传,做了以下处理解决。一开始这样改的,可以滑动列表时,容易误触点击事件,后来改良下。
2024-01-17 23:26:03 479
转载 MacOS系统zsh输入所有命令command not found:xxx
然后保存文件并重新启动,source ~/.zshrc的作用是重新加载当前用户的 Zsh shell 配置文件 .zshrc。,同时保留原有 PATH 中的其他目录,确保系统在搜索可执行文件时也考虑了原有的路径,最重要的一点是确保系统能够找到并执行您希望运行的命令。它的作用恰恰是直接将当前 shell 进程的 PATH 环境变量设置为指定的路径列表。
2024-01-09 19:58:10 1161
原创 Android Crash
有赞 Android 崩溃保护的探索及实践如何避免Android运行时崩溃,保证程序高可用性一Android开发之打造永不崩溃的APP——Crash防护Android性能优化——崩溃Crash封装库android开发让App永不闪退,永不crash的解决方法深入探索Android稳定性优化 深入探索Android稳定性优化Android NativeCrash 捕获与解析Android 平台 Native Crash 问题分析与定位Android 平台 Native Crash 捕获原理详解
2023-06-29 14:28:56 689
转载 Android Fragment :java.lang.IllegalStateException: Fragment already added
java.lang.IllegalStateException: Fragment already added 解决方式。
2023-06-16 16:19:17 1189
转载 Android网络优化
网络优化的方向主要是流量优化质量优化线下测试以及线上监控方案结合 OkHttp 获取网络请求质量数据,OkHttp 给我们留了一个事件监听器 EventListener 回调,我们可以自己实现这个监听器,监听每一次的请求。自定义 GlideModue 是为了监控图片加载的过程,下面我们来看下怎么监控 Glide 加载图片过程的耗时和相关数据。
2023-05-08 01:30:09 1901
转载 Mac升级到 MacOS Ventura 13.0 后Gitlab认证失败,提交提示需要密码
mac升级到 macos ventura 13.0 后gitlab认证失败,提交提示需要密码
2022-11-02 18:16:36 921
原创 RecyclerView状态异常Cannot call this method while RecyclerView is computing a layout or scrolling
Cannot call this method while RecyclerView is computing a layout or scrolling
2022-10-08 15:26:30 6575
原创 从github上clone代码时The unauthenticated git protocol on port 9418 is no longer supported解决方法
找到git的配置文件.gitconfig文件,在文件中加入以下配置即可[url "https://"] insteadof = git://[url "https://"] insteadof = ssh://
2022-05-10 01:19:40 630 1
原创 Android实现圆形头像
ClipPathimport android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Path;import android.grap
2022-02-18 19:45:46 2271
原创 Lottie-Android详解
Lottie是什么Lottie是Airbnb开源的一套跨平台的、完整的动画效果解决方案,适用于 Android、iOS、Web 和 Windows 平台,它解析使用 Bodymovin 导出为 json 的 Adobe After Effects 动画,并在移动设备和 Web 上本地呈现它们!如下图:以下是Lottie官网给出的一些动画效果 Airbnb为什么要做Lottie1、为什么要使用LOTTIE?先看看在没有Lottie之前我们实现复杂动画的方式:使用GIF,占用空间大,有些动画
2021-12-23 01:56:53 16111 2
转载 Android手机导出日志文件
我们平时排查一些app线上问题时,除了需要排查后端接口数据以外,还需要抓去用户手机端的日志文件来一起排查,如何抓去Android端日志文件,接下来一一讲解,以Macbook-Pro为例。方式一:使用USB连接在手机上启用USB调试在终端输入adb devices 获取日志只连接一个设备:清除已缓存日志:adb logcat -c获取日志并保存到本地:adb logcat >~/Desktop/a.txt (本地目录可自行定义)在终端使用快捷键 Ctrl+C 停止日志获取连接
2021-12-01 15:15:43 5381
翻译 JavaPoet使用详解
JavaPoet 是用于生成 .java 源文件的 Java API。在执行诸如注释处理或与元数据文件(例如,数据库模式、协议格式)交互等操作时,源文件生成非常有用。通过生成代码,您无需编写样板,同时还为元数据保留了单一的真实来源。例子这是一个(无聊的)HelloWorld 类:package com.example.helloworld;public final class HelloWorld { public static void main(String[] args) {
2021-11-23 23:25:19 5796
转载 约束布局Constraintlayout使用解析
1.简介约束布局ConstraintLayout 是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。从 Android Studio 2.3 起,官方的模板默认使用 ConstraintLayout。ConstraintLayout 官方文档2.为什么要用ConstraintLayout在开发过程中经常能遇到一些复杂的UI,可能会出现布局嵌套过多的问题,嵌套得越多,设备绘制视图所需的时间和计算功耗也就越多。
2021-11-03 16:42:34 1489
原创 Android实现可以上下滑动的panel
背景用过美团和滴滴的朋友都知道,他们都有一个可以上下滑动的面板,能够实现上滑,下拉和悬停,那么要怎么实现呢,下面我们就来简单探讨下。使用ViewDragHelper实现思路:这是一个底部抽屉,它可以悬停在中间,随着滑动自然过渡到全屏。它是仿照DrawLayout设计实现的,只不过是竖直方向的,内部通过ViewDragHelper实现,具体参照以下实现Android 简易悬停抽屉控件 —— 仿知乎收藏夹 fashare2015 /HoverView umano /AndroidSliding
2021-10-07 22:26:06 2033
原创 Android EditText使用总结
设置EditText的背景通过设置以下属性来设置EditText的背景 android:background="@drawable/decoration"decoration.xml 的内容<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <
2021-08-13 18:40:16 3499
转载 Android ImageView的scaleType详解
ImageView 是 Android 中最常用的控件之一,而在使用ImageView时,必不可少的会使用到它的scaleType属性。该属性指定了你想让ImageView如何显示图片,包括是否进行缩放、等比缩放、缩放后展示位置等。Android 提供了八种scaleType的属性值,每种都对应了一种展示方式,下面就对每一种scaleType属性值进行解释。ImageView的scaleType的属性值有MATRIX,FIT_XY,FIT_START,FIT_END,FIT_CENTER,CENTER,
2021-07-22 18:28:32 28703 1
原创 修改CardView的阴影颜色
通过暴露自定义view的阴影属性或者反射来设置CardView的阴影颜色demo传送门参考如何设置 CardView 阴影颜色利用反射设置CardView阴影颜色
2021-05-26 16:32:31 1744
转载 java 传递参数的两种方式
Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。a.传递值的数据类
2021-05-25 01:12:32 2957
转载 c语言中external,static关键字用法
static用法:在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量,全局静态变量有以下特点。a.在全局区分配内存。b.如果没有初始化,其默认值为0.c.该变量在本文件内从定义开始到文件结束可见。2、定义局部静态变量:在局部变量前面加上关键字static,其特点如下:a.该变量在全局数据区分配内存。b.它始终驻留在全局数据区,直到程序运行结束。c. 其作用域为局部作用域,当
2021-04-25 10:58:26 390
转载 计算机按位去反计算方法
背景“反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。取反:逻辑非“!”,逻辑取反, false变true,true变false,在C中,只要不是0就是真,所以!5值是0反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)按位取反(~): 按位取反1变0,0变1。要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的。另外正数和负数的补码不一样,正数的补码、反码都是其本身,负数的反码等于原码符号位不变,其余
2021-03-26 16:21:01 3083
原创 Android Studio中Gradle从命令行构建应用和配置编译版本
从命令行构建您的应用您可以使用 Gradle 封装容器命令行工具执行 Android 项目可用的所有构建任务。它可作为 Windows 的批处理文件 (gradlew.bat) 和 Linux 与 Mac 的 shell 脚本 (gradlew.sh) 使用,而且您可以从使用 Android Studio 创建的每个项目的根目录启动该工具。如需使用封装容器运行任务,请在终端窗口中(在 Android Studio 中,依次选择 View > Tool Windows > Terminal)使
2021-03-14 23:46:58 3991
原创 Android应用内换肤
换肤简介换肤本质上是对资源的一种替换包括、字体、颜色、背景、图片、大小等等。比如View的修改背景颜色setBackgroundColor,TextView的setTextSize修改字体等等。换肤方案目前Android换肤有两种类型,静态换肤和动态换肤;静态换肤就是将所有的皮肤方案放到项目中,而动态换肤则就是从网络加载皮肤包动态切换;通常静态换肤是通过Theme实现,通过在项目中定义多套主题,使用setTheme方法切换的方式实现换肤;动态换肤是通过替换系统的Resouce动态加载下载到本地的
2021-03-07 22:43:52 923 1
转载 kotlin-android-extensions和ViewBinding
背景在kotlin-android-extensions和ViewBinding出现之前,我们进行View控件的实例化通常都是使用findViewById或者ButterKnife之类的第三方库,总的来说就是需要写很多重复且无意义的代码。接下来我们就来介绍kotlin-android-extensions和ViewBinding的使用。使用kotlin-android-extensions插件1.首先在模块的 build.gradle文件中启用 Gradle 安卓扩展插件即可apply plug
2021-03-04 13:49:05 1777 1
转载 Android10和Android11作用域存储Scoped Storage详解
理解作用域存储Android长久以来都支持外置存储空间这个功能,也就是我们常说的SD卡存储。这个功能使用得极其广泛,几乎所有的App都喜欢在SD卡的根目录下建立一个自己专属的目录,用来存放各类文件和数据。那么这么做有什么好处吗?第一,存储在SD卡的文件不会计入到应用程序的占用空间当中,也就是说即使你在SD卡存放了1G的文件,你的应用程序在设置中显示的占用空间仍然可能只有几十K。第二,存储在SD卡的文件,即使应用程序被卸载了,这些文件仍然会被保留下来,这有助于实现一些需要数据被永久保留的功能。然而,这些
2021-03-03 22:50:29 3991 1
转载 Android Jatpack App Startup使用详解
简介App Startup提供了一种在应用程序启动时初始化组件的简单、高效的方法。库开发人员和应用程序开发人员都可以使用应用程序启动来简化启动序列并显式设置初始化顺序。App Startup`允许您定义共享单个内容提供程序的组件初始化程序,而不是为每个需要初始化的组件定义单独的内容提供程序。这可以显著缩短应用程序启动时间。App Startup解决什么问题在学习App Startup的用法之前,首先我们需要搞清楚的是,App Startup具体是用来解决什么问题的。App Startup是一个可以用于
2021-03-02 23:29:29 484
翻译 Android Jatpack DataStore使用详解
简介Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和流程以异步、一致的事务方式存储数据。如果您当前在使用 SharedPreferences 存储数据,请考虑迁移到 DataStore。注意:如果您需要支持大型或复杂数据集、部分更新或参照完整性,请考虑使用 Room,而不是 DataStore。DataStore非常适合简单的小型数据集,不支持部分更新或参照完整性。Preferences Dat
2021-03-01 23:47:20 1546 1
原创 Android DeepLink多个参数传递
DeepLink在adb shell命令模拟时,如果有多个参数,& 符号之前要加 \ 进行转义,否则后面的参数收不到。解决方法:$ adb shell am start -W -a android.intent.action.VIEW -d "scheme://host?package=com.tencent.mm\&isNeedComment=true"...
2021-02-22 18:59:53 2330
原创 Java或者Python搭建简单HttpServer
java搭建简单HttpServerjava构建简单的HTTP服务器Java 实现简单的Http服务器搭建简单的HTTP服务器用Java编写你自己的简单HTTP服务器Python搭建简单的HttpServer在Windows 7/10或Ubuntu上可以通过python2.x或python3.x来快速搭建一个简单的HTTP服务器。如果python为2.x,则可执行:$ python -m SimpleHTTPServer 或 $ python2 -m SimpleHTTPServe
2021-02-21 16:13:18 288
转载 Android DeepLink使用
DeepLink 介绍DeepLink,即为深度链接技术,主要应用场景是通过Web页面直接调用Android原生app,并且把需要的参数通过Uri的形式,直接传递给app,节省用户的注册成本。DeepLink 通常运用于App社交分享、App广告引流、App裂变活动、Web to App、分享效果统计、沉默用户唤醒等场景,对广告引流、活动推广、新闻类、电商类、游戏类、视频直播类App的引流推广和转化都有着奇效。常见使用场景如下:电商类:在分享商品链接中点击,进入 App 内对应店铺或购物页面资讯类
2021-02-19 19:30:02 8517
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人