- 博客(242)
- 资源 (33)
- 收藏
- 关注
原创 Activity + Fragment 页面重叠问题
Activity + Fragment 页面重叠问题一、 造成问题的原因根本原因:Activity被销毁并重新创建了,但已经加载过的Fragmen被保存了下来,这时Activity重新创建时又产生了新的Fragment,所以重叠了。问题场景:横竖屏切换报错之后恢复页面内存不足时Activity销毁二、 解决方法为了模拟这一场景,可在手机 开发者选项-> 应用->不保留活动 模拟场景。解决方式一:在Activity回收时不保存状态,这样当Activity销毁时再进入时,就重
2021-10-15 21:57:37 1316
原创 implementation和api的区别
implementation和api的区别为了方便记忆,可以这么理解。implementation 类似于“praivte”,module引用implementation只应用于自身,不会传递。api类似于“public”,其他module如果dependency该module,也可以引用到该module中的资源,会传递。再看看官方文档:implementationGradle 会将依赖项添加到编译类路径,并将依赖项打包到构建输出。不过,当您的模块配置 implementation 依赖
2021-07-20 11:02:00 1057
原创 树状图的输出(递归转循环)
树状图的输出(递归转循环)解析树状图的时候,递归算是比较好理解的方式,但是递归在遍历大量的树状图数据时,反而会引起栈溢出,此时就需要转循环了。模拟一个数据{ "name":"1", "child":[ { "name":"2", "child":[ { "name":"4", "child":[
2021-06-16 21:57:17 865
原创 面试官:讲讲TCP的三次握手和四次挥手
面试官:讲讲TCP的三次握手和四次挥手某上市公司遇到过,面试高频题。文章尽量用最简洁的语言方便理解与记忆。一、三次握手(建立链接)A 代表主动链接方,B 代表被动链接方1.1 简单点A->B 你活着吗?B->A 我活着,你呢?A->B 我也活着1.2 复杂点A->B Syn(i)B->A Ack(i+1),Syn(k)A->B Ack(k)1.3 图解Http书中截取1.4 为什么是三次握手?TCP 是面向链接的,也就是建立链接
2021-05-16 21:17:55 630 8
原创 SourceTree 删除记住的账户
SourceTree 删除记住的账户如果是mac,在钥匙串访问 APP中删除对应的账号,然后在sourceTree 中 偏好设置 -> 高级 删除对应的账号。SourceTree 在中文状态下和英文状态下居然功能会不一样,找这个问题太难受了。中文状态下高级按钮不可点击:将sourceTree切换成英文才可以点击:...
2021-05-09 13:21:32 5126 13
原创 Mac 命令行中无目录操作权限。
Mac 命令行中无目录操作权限。将需要执行的命令保存在 .sh 的文件中,依次执行:chmod +x XX.shsudo XX.sh
2021-04-28 21:54:24 624
原创 电脑的喇叭坏了
MacPro 电脑的喇叭坏了。首先我不会修电脑,所以我找到了两种解决办法。大家都知道电脑中为了达到立体声,一般都会有左右两个喇叭,所以在声音的偏好设置中关掉一个。。我还有一台闲置的iphone6,总想对它打点注意,它可以做电脑的音响吗,找了半天虽然没找到官方的方式,但找到了一个还算好用的软件,现在这情况啊,能想到的人家都已经做出来了;它是通过局域网连接的,看电影是有相当的延迟,但是听音乐就无所谓啦。软件名字叫 Airfoil,支持多平台。...
2021-04-28 21:38:38 263
原创 Android 如何在不显示文字时获取文字宽度
Android 如何在不显示文字时获取文字宽度正确方式:在canvas中使用:paint.measureText(text)在TextView中使用:textView.getPaint()..measureText(text)代码示例:package com.demo.myapplication3;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;impo
2021-04-11 12:54:02 307
原创 Canvas 文字对齐方式
Canvas 文字对齐方式常用的画文字的方法public void drawText (String text, float x, float y, Paint paint)x,y 并不是指定文字的中点位置,并且x,y与文字对齐方式有关(通过setTextAlign()指定,默认为left)测试import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import
2021-04-10 23:20:39 1531
原创 换个日志打印类吧
换个日志打印类吧日常观摩别人的代码,发现了一个比较好的日志类,它可以更快捷的定位到日志的位置和线程信息。地址:https://github.com/orhanobut/logger使用步骤参照官方的文档,这里列出一个日志打印的工具类,方便使用import com.orhanobut.logger.Loggerobject PrettyLog { private val TAG = "PrettyLog" /** * 是否开启 Logger */
2021-04-10 15:59:16 110
原创 Android 选择文件返回路径怎么就这么难?
Android 选择文件返回路径怎么就这么难?这个问题纠结了我很长时间,终于有了比较好的解决方案。目前已知适配所有的机型,有问题就留言吧。正确姿势来一遍1. 打开系统自带的文件浏览器并限制类型public void OpenFile(View view) { // 指定类型 String[] mimeTypes = {"*/*"}; Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
2021-03-31 23:37:21 1896 1
原创 Android中Object.requireNonNull和@NonNull
Android中Object.requireNonNull和@NonNullAndroid中的Object.requireNonNull和@NonNull并不能解决报错的问题,相反,是为了更快速的抛出问题、定位问题。问题1: 不加上Object.requireNonNull也会抛出异常,为什么要加上呢?答:这是因为Fail-fast思想, 翻译过来就是, 让错误尽可能早的出现,让开发者可以迅速的定位错误,而不是嵌套的很深发生错误再去排查。问题2: @NonNull 的作用是什么?答: @NonNu
2021-03-31 22:15:41 1008
原创 Android Button添加背景后变大?
Android Button添加背景后变大原因:在系统Button自带的样式中,限制了minHeight,minWidth。解决:在写Button组件时将 minWidth minHeight 设置为0dp。 <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/selecto
2021-03-25 14:47:51 901
原创 EventBus 遇到的问题汇总
EventBus 粘性事件接收不到的问题一、起因由于EventBus发送的是对象,我们经常构建一个共用的对象,在共用对象中添加tag,用于方便在接收中区分作用。例如用EventBusHelper工具类发送EventBusMessage对象。二、遇到的问题在发送粘性事件时,在A场景发送了一次,然后还没有接收,然后在B场景又发送了一次,这时B发送的粘性事件可以收到,而A场景的粘性事件被替换掉了。这时因为在EventBus的源码中,粘性事件使用Map集合存储,key为 object.getClass(
2021-03-01 22:25:54 1197
原创 大端小端模式
大端小端模式一、什么是大小端模式大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。举个例子:以 unsigned int value = 0x12345678来表示,unsigned char buf[4]存放。Big-Endian: 低地址存放高位,如下:
2021-02-19 23:38:05 2680
原创 今日头条适配遇到的问题(持续更新...)
今日头条适配遇到的问题(持续更新…)问题 1出现场景:横屏应用,在按home按键或者锁屏,当软件进入后台时,保持手机的竖屏,此时再产生新的Fragment更新UI时,有几率出现适配错误。原因分析:在锁屏或进入后台时,虽然应用固定为横屏,但手机在竖屏状态下,会让软件获取到竖屏状态,以至于新UI产生时,产生宽和高相反的适配效果。解决办法:Issue上的解决办法:https://github.com/JessYanCoding/AndroidAutoSize/issues/248我的解决办法:在
2021-01-29 20:46:42 1202
原创 ByteBuffer数据结构
ByteBuffer的数据结构ByteBuffer 是属于java的nio部分,在编程的高端操作中经常看到它的身影,如果网络编程,比如安卓中的硬编解码(MediaCodeC)中…组成部分byte[] bytes: 用来存储数据int capacity: 用来表示bytes的容量,那么可以想像capacity就等于bytes.size(),此值在初始化bytes后,是不可变的。int limit: 用来表示bytes实际装了多少数据,可以容易想像得到limit <= capacity,此
2021-01-29 20:45:54 247
原创 获取全面屏分辨率的方法
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); Point point = new Point(); if (wm != null) { wm.getDefaultDisplay().getRealSize(point); } LogWrapper.d("全面屏实际大小:" + point....
2021-01-13 10:24:36 297
原创 今日头条适配方案造成Dialog显示异常的解决方法
今日头条适配方案造成Dialog显示异常的解决方法产生问题的原因由于该适配方案是更改的全局的density, 对整个项目生效,所以在使用第三方View或者系统的的view时,如果和项目中的设计尺寸差别很大,就会出现很严重的UI问题。解决办法方法一: 尽量所有的视图都使用自定义的视图。方法二: 更改原生Dialog的大小。代码示例一: 根据屏幕宽度, 更改原生Dialog的比例 /** * 显示取消/确认的dialog */ public void sh
2021-01-13 10:20:28 1603
原创 Android 6.0 应用内更新失败
Android 6.0 应用内更新失败场景:在Android设备6.0上, getFilesDir().getAbsolutePath()目录下的apk安装时提示 “解析错误-解析软件包时出现问题”;Environment.getExternalStorageDirectory().getPath() 目录下却可以正常安装。原因:6.0 没有对该apk的运行权限。解决:方法一(尝试失败):chmod("777", apkFile.getAbsolutePath());//apk放在cache
2021-01-04 16:30:40 371
原创 Mac pro 连上wifi 5G提示无ip地址
Mac pro 连上wifi 5G提示无ip地址问题解决现象某品牌双频路由器,2.4G的网能连接上,5G的wifi连接上提示无ip地址。DHCP都是自动分配的,却上不了网。解决进入路由器管理后台,将5Gwifi的信道设置成161...
2020-12-17 20:50:25 4658
原创 Android hid限制设备的两种方式
Android hid限制设备的两种方式方式一:在xml文件中过滤在res文件夹下新建xml文件夹,并新建device_filter.xml文件,在该文件中指定vid和pid。<?xml version="1.0" encoding="utf-8"?><resources> <usb-device vendor-id="1234" product-id="5678" /></resources>在AndroidManifest文件中
2020-09-09 22:23:04 1182
原创 java Int 转 String 后占用内存会变大吗?
java Int 转 String 后占用内存会变大吗?什么是bytebyte,即字节。byte作为java的基本类型之一。它的范围在-128~127,默认值为0。byte 数据类型是8位,1个字节=8bitbyte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一内存分析String 英文字符1个字节 中文2个字节(String的中文字节数要看用的编码集合,如果是utf-8类型的,那么中文占2到3个字节,如果是GBK类型的,那么中
2020-09-09 22:21:43 1350
原创 Unknown host ‘services.gradle.org‘ 的解决办法
Unknown host ‘services.gradle.org’ 的解决办法问题原因AndroidStudio 没有下载过该版本的gradle;由于网络原因,在部分运营商网络下,下载gradle会失败,提示这个错误解决更换某信的运营商网络,或者让手机开启热点重新下载。更换gradle版本,distributionUrl更换本地的其它项目已经下载过的gradle。eg:mac gradle 下载的本地目录在 /Users/User/.gradle/wrapper/dists自己从三
2020-09-09 22:20:22 4278
原创 Android更改原生Dialog的宽高
Android更改原生Dialog的宽高重点代码特别注意:需要在dialog show 之后再去设置。if (mAlertDialog.getWindow() != null) { WindowManager.LayoutParams lp = mAlertDialog.getWindow().getAttributes(); lp.width = 300; // 宽度,可根据屏幕宽度进行计算 lp.gravity = Gravi
2020-09-09 22:19:40 1008
原创 can‘t locate SVN/Core.pm in @INC (you may need to install the SVN::Core module)
在用sourceTree时,提交或拉取代码时提示错误:can't locate SVN/Core.pm in @INC (you may need to install the SVN::Core module) (@INC contains: /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level /usr/local/git/lib/perl5/site_perl/5.18.2 /usr/local/git/lib/pe
2020-08-16 22:27:23 1739
原创 Android屏幕共享-传输图片
Android屏幕共享-传输图片该篇主要讲解安卓与安卓之间如何截图传输,属于安卓屏幕共享的入门篇。适用场景:安卓屏幕共享工具类应用。效果图效果图demo界面前言目前安卓屏幕共享的方式有很多种软件已经实现,究其根源,无非就是采集-传输-播放的过程,而安卓端无论是截图传输还是硬解码,也一定离不开核心类MediaProjection,它就是Google开放了视频录制的接口(屏幕采集的接口)。比较优秀的软件举例:TeamViewer向日葵Vysor其中Vysor就是通过adb实现无
2020-07-28 22:05:22 3331 1
原创 Android TextView同时设置粗体和斜体
Android TextView同时设置粗体和斜体问题TextView的粗体和斜体无法同时生效,要么显示斜体,要么显示粗体。错误代码:tv_test3.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);tv_test3.setTypeface(Typeface.SANS_SERIF, Typeface.ITALIC);正确示例:tv_test3.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD_IT
2020-07-28 20:58:24 5002
原创 Android修改自定义Dialog的大小
Android修改自定义Dialog的大小重点代码view.setMinimumWidth();public class TestDialog extends Dialog { private Activity mContext; public TestDialog(Context context) { super(context, R.style.test_dialog_style); mContext = (Activity) context;
2020-07-15 21:30:38 1095 1
原创 封装一个简单的崩溃监听类
封装一个简单的崩溃监听类注意:无法监听到OOM和ANR异常CrashUtilsimport android.content.Context;import android.os.Handler;import android.os.Looper;import android.util.Log;import android.widget.Toast;public class CrashUtils { private static String TAG = "CrashUtils";
2020-06-04 22:12:03 237
原创 ScrollView fillViewport 使用
ScrollView fillViewport 使用有一个需求界面中自上而下有两个方块,依次为A、B方块。A 方块的大小不固定,小的时候在屏幕内,大的时候会超过屏幕外。B 的布局,始终在A的下方,屏幕够显示时,在屏幕的最底部,屏幕不够显示时,随着A滑动。fillViewport 引入如果只在外层写了ScrollView,B会紧紧跟随A,B 不会始终在屏幕最底部了。这时在 ScrollView 内加入 fillViewport=true, 就可以实现需求了。效果图 与 layout 测试代
2020-06-04 21:59:56 827
原创 ProgressDialog进度条更改文件单位
ProgressDialog进度条更改文件单位效果图重点部分重点方法:setProgressNumberFormatDownLoadRunnable:模拟下载线程package com.demo.progress;/** * Created by talon on 2020/5/20 * note: 模拟下载线程 */public class DownLoadRunnable implements Runnable { // 模拟数据大小10M private lo
2020-05-24 16:26:07 322
原创 可拖动的组件,可更改为其它View
可拖动的组件,可更改为其它View效果图自定义View源码DragTextViewpackage com.demo.drag;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.ViewGroup;import android.widget.RelativeLayout;/** * Created
2020-05-24 16:24:05 298
原创 Socket 服务端断网时,客户端依旧显示连接状态?
Socket 服务端断网时,客户端依旧显示连接状态?使用socket进行测试:客户端断网时,客户端接到断开回调服务端手动关闭时,客户端接到断网回调服务端运行突然断网时,客户端接收不到断网的回调(分很多场景,参考:https://www.cnblogs.com/549294286/p/5077175.html)为什么在服务端断网时接不到回调呢?这是因为TCP建立的通道被破坏,造成了...
2020-05-05 21:53:02 2195
原创 Socket 分包的原因及解决办法
Socket 粘包分包的原因及解决办法该文章部分引用来自:https://blog.csdn.net/double2hao/article/details/83211334原因socket发生粘包分包实际上是在TCP传输协议对数据的优化,TCP是“流”协议,传输的过程就像流水一样没有边界,没有界限,而实际上我们只需要取出我们发送的部分即可;这里说明下UDP是"数据包"协议,所以在UDP中...
2020-05-05 21:29:49 3052
原创 Java Socket 如何接收byte和String
Java Socket 如何接收byte和String一、发送byte[]与String我们平时是怎么发送byte和String的呢?举例代码:String str = "hello world"+ "\n";byte[] bytes = 图片字节流;// 获取socket输出流OutputStream out = socket.getOutputStream();// 发送字符串...
2020-05-05 21:29:02 4669
原创 Java Socket Tcp 完整示例
Java Socket Tcp 完整示例Clientimport java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Outpu...
2020-05-05 21:27:39 409
原创 Arouter 无法跳转的问题
Arouter 无法跳转的问题Arouter 原理路由框架会在项目的编译期通过注解处理器扫描所有添加@Route注解的Activity类,然后将Route注解中的path地址和Activity.class文件映射关系保存到它自己生成的java文件中。我们在代码里加入的@Route注解,会在编译时期通过apt生成一些存储path和activity.class映射关系的类文件,然后app进程启动...
2020-02-22 00:00:04 5839
原创 Android使用svg
Android使用svgsvg是什么?Scalable Vector Graphics,可缩放矢量图形。相当于图片是计算出来的,所以相对于传统的图片,svg放大缩小都不会变形。AndroidStudio 如何使用SVG?Android 5.0 及以上系统中引入了 VectorDrawable 来支持矢量图(SVG)创建一个项目对着res点击右键,依次 New->Vector As...
2020-02-21 23:59:06 246
原创 Android 加载长图
Android 加载长图使用库implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.5.0'注意:不要放在ScrollView中,不然滑动可能会冲突。那么加载长图时,如何按宽度填充呢?<com.davemorrissey.labs.subscaleview.SubsamplingScale...
2020-02-21 23:58:19 682 2
AndroidScreenQuick.zip
2020-07-28
GreenDaoDemo.zip
2019-10-22
ScreenRecorderDemo.zip
2019-06-23
windows_red5_live
2018-07-16
GridView分组显示StickyGridHeaders
2018-03-17
Google推荐的图片加载库Glide
2016-04-16
android BadgeView
2015-08-04
android全局监听网络
2015-08-04
GridView_ImageLoader 实例demo
2014-12-04
spinner的使用及问题
2014-12-01
开机自启,服务,广播,notification的联合使用
2014-11-21
android 第一次运行时引导界面
2014-09-12
android查找指定目录下的视频或图片
2014-09-04
低能耗蓝牙demo
2014-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人