自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 问答 (1)
  • 收藏
  • 关注

原创 ColorStateList在自定义Drawable中的应用

自定义Drawable中使用ColorStateList切换状态

2024-03-05 16:08:17 683

原创 Android获取不同类型的ip地址

在同时存在多个不同类型的网络连接的情况下,比如wifi和usb数据共享,或者wifi和以太网同时连接,设备有多个ip地址,需要通过网卡的名字来区分每一个ip地址。

2023-04-26 14:11:56 484

原创 ReadWriteLock和Synchronized在不需要线程同步时的性能比较

通常做法是加synchronize关键字,但是其实绝大部分情况下都是不必要的,加关键字反而会影响读线程的性能。后来想到了lock,ReadWriteLock适用于读多写少的情况,但网上各种文章只是说它支持多个线程同时读,在多个线程读的情况下性能优于synchronized,那么单线程读的性能如何呢?二者均比不加锁性能稍差。结论是:在单线程读的情况下,如需要同步,直接用synchronized就行了。需求是这样的:读操作很频繁,但写操作很少,在读的线程需要保证相应的代码块中读取的值不变。

2023-04-23 11:32:57 119

原创 Android中的图像矩阵归一化

Matrix应用到OpenGL中时需要先进行归一化处理,记录一下归一化的推导过程及

2022-08-29 10:18:16 1026

原创 解决android中 ExifInterface.setAttribute()无效问题

解决Android中设置EXIF信息失败问题

2022-08-09 11:46:02 924

原创 Android中的OpenGL使用初探

OpenGL ES在Android中的使用

2022-08-05 17:25:13 3621

原创 Android中Gradle的使用

Gradle是一个基于JVM的构建工具,本文介绍了部分Gradle的基础知识,以及Gradle在Android studio中的使用

2022-08-02 17:15:32 2943

原创 Android长按实现连续点击

非入侵式长按实现连续点击

2022-06-15 15:34:55 1347

原创 PopupWindow中的ListView调用notifyDataSetChanged()无效问题及解决方案

ListView的数据改变后,需要调用其设置的adapter.notifyDataSetChanged()这样才能更新数据。但是,如果是用PopupWindow显示ListView,可能会有数据刷新无效问题。比如PopupWindow在dismiss之后,要更新数据并显示PopupWindow,这种情况下往往会更新失败。 if (!popWindow.isShowing()){ adapter.setData(displays); adap

2022-04-19 15:27:00 495

原创 Android 获取其它app的Activity名称及action

参考网上资料,目前发现两种方式:1.adb命令1)电脑连上手机,终端输入:adb shell logcat | grep cmp= ,然后终端就进入了堵塞监听状态。2)操作手机打开APP,终端就会监听显示出当前打开的APP包名和Activity名称。比如: START u0 {flg=0x10000000 cmp=com.miui.securitycenter/com.miui.permcenter.autostart.AutoStartManagementActivity} from ui

2021-08-31 11:01:19 1767

原创 YUV与RGB相互转换

Android相机yuv输出格式是420sp,MediaCodec硬编码通常也是yuv420sp,因此yuv420sp与rgb之间的转换较为常用,这里记录一下:转换公式按照yuv2rgb: rgb2yvv:rgb转yuv420sp(YYYYUVUV),每逢偶数行及偶数列取一次UV数据:/** * @param yuv420sp target to save yuv data, the length should be at least width*height*1....

2021-08-09 10:18:01 1919 1

原创 android NDK crash定位(精简版)

NDK的crash与java不同,无法看到报错的具体位置,极端情况下甚至只有一句log。如下面这种Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x76c229b8e8 in tid 23230 (ImageTester:), pid 23186在网上查了不少文章,有的写的很多,但却不怎么实用,有的则是给出的路径错误,这里简单记载下可用的命令。除了使用打log那种笨方法,ndk的crash需要用到ndk-track,位

2021-04-06 19:30:56 456

原创 ImageReader中YUV_420_888格式图像转nv21

参考了https://blog.csdn.net/lbknxy/article/details/54633008这篇博客,先感谢一下。Camera2使用ImageReader进行数据回调,但使用YUV_420_888格式,回调后yuv分别存储成plane数组中的3个,如果要形成nv21或i420数据,需要重新组合起来。在网上找的相关代码都很复杂,但实际上没有必要。plane数组第0项是Y通道,这个没争议;但第1项并非只存储U通道,而是UV通道交替存储,这也是planes[1].getPixe.

2020-12-18 09:06:00 4921

原创 Android写入外置sd卡

android9.0保存文件到外置Sd卡1. 获取外置sd卡根目录sd卡根目录是类似/storage/0000-0000 这样的路径,而用runtime.exec("mount"), 或者是用StorageManager.getStorageVolumes()再用反射path获取的路径是/mnt/media_rw/0000-0000 不可用,需要用下面的方式获取: public...

2020-01-09 11:14:03 1248 1

原创 Android的超链接类型

关于android支持的超链接协议网上的资料很少,尤其是关于地图的,特此记录下TextView的autolink超链接类型有email, map, phone, web,对应的链接格式如下:邮件链接, mailto:[email protected]短信链接,smsto:10086电话链接,tel:10086web主要有http:和https:,后面接网址map链接,geo:纬度,经度...

2020-01-07 10:57:23 260

原创 Android写入外置sd卡

参照https://blog.csdn.net/qq_36467463/article/details/88691726自己整理了下1. 获取外置sd卡根目录sd卡根目录是类似/storage/0000-0000 这样的路径,而用runtime.exec("mount"), 或者是用StorageManager.getStorageVolumes()再用反射path获取的路径是/mnt/...

2019-12-04 18:09:29 1032 1

原创 Android字体

1. 布局中xml影响字体的属性共有如下三种属性,均对应代码中的textView.setTypeface()1) android:typeface 类型为enum monospace: 等宽字体 normal: 普通字体 sans: 非衬线字体 serif: 衬线字体2)android:fontFamily 类型为String与上面属性互斥,二者...

2019-08-29 10:51:31 515

原创 子view宽度可变的自定义LinearLayout例子

最近项目设计的一个要求:TextView右面紧接着ImageView,并且当TextView的文字太长,使用ellipsize的单行效果,右面显示的图片不变。使用现有的布局,无论是线性布局、相对布局还是约束布局,都无法满足要求,于是想到自定义布局,代码如下:/** * Like a linearLayout but make child A with id==flexible_id fle...

2019-05-20 10:49:52 671

原创 RecyclerView滚动适配解决方案

针对键盘弹出/消失及聊天工具的显示与消失时recyclerView内容滚动的问题效果类似手机QQ,保持消息内容相对位置不变mRecyclerView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { private int flagPosition;//the position of last visibl...

2018-08-14 16:13:06 460

原创 java对象万能clone

一般说来,Java的对象必须要实现Cloneable接口才能克隆,如果是自定义的类,只需实现Cloneable接口并在clone()中调用super.clone()即可,但如果是系统提供的类,则无法这样进行克隆。那么对这样的对象有没有方法进行clone呢?先看一下Object类中clone()部分protected Object clone() throws CloneNotSupportedEx...

2018-06-07 09:28:33 396

转载 Java图像格式判断

原理:从inputStream中读取前10个byte,然后转换为char// GIF if (b0 == (byte) 'G' && b1 == (byte) 'I' && b2 == (byte) 'F') type = "GIF"; // PNG else if (b1 == (byte) 'P' && b2 == (byte) 'N' && b3 == (byte) 'G')

2018-02-08 14:47:17 1702 1

原创 android键盘及虚拟键适配

聊天界面,需要实现切换软键盘及输入框下面的其它聊天工具时,输入框的位置不变;根据键盘的变化及是否是用户通过键盘上的按钮来隐藏键盘,来显示和隐藏聊天工具。Android系统未提供判断软键盘是否弹出及虚拟按键是否显示的方法,在网上查到的资料,只能通过OnGlobalLayoutListener来间接判断,开发过程中遇到一堆坑。

2017-12-21 11:11:02 1428

原创 Android虚拟键盘的高度计算

系统本身没有提供获取虚拟键盘的方法,在网上查了一些资料,发现还存在一点问题,故此把改好的代码记录下来,以备后用。需要用OnGlobalLayoutListener来监听app窗口的变化final View decorView = getActivity().getWindow().getDecorView(); //虚拟按键高度 final int vmKe

2017-12-14 11:18:53 733

原创 用SharedPreferences存储集合

思路:参考网上资料,存储json字符串,使用时进行解析即可,为避免重复,建议用set集合例:/** * 获得用户登录过的所有账户 * @return 用户名的set集合 */public static HashSet getAccountList() { SharedPreferences sp=getSharedPreferences(); HashS

2017-11-21 17:04:40 626

原创 Android自定义可缩放的ImageView,长按可弹出菜单

参考了一些网上案例,按照自己的逻辑写的,自认为逻辑还算清晰,代码量也不大。使用方式和ImageView相似,但其缩放标签失效 public class ZoomImageView extends android.support.v7.widget.AppCompatImageView implements Runnable { private boolean isLoadI...

2017-11-17 17:40:02 1775 1

原创 一种网络数据传输加密算法的设想

注:本设想只针对有账号的网络数据传输,如微信账号间发消息的数据加密。核心思想:对每个用户设定不同的秘钥。对某一网络由于账号的ID(或用户名)是不能重复的,所以如果对ID(或用户名)进行处理作为信息加密的秘钥,可基本保证每个用户的加密秘钥都不相同。数据从客户端传到服务器,可用客户端的用户秘钥进行加密,服务器进行解密后得到原始数据;服务器向客户端发送数据时先根据要发送的用户秘钥,对数据进行加密

2017-10-21 10:20:50 333

原创 TestSOS,一键求助的demo

自己写了一个一键求助的demo,只有发短信向紧急联系人以及警方(为避免麻烦,未添加向警方发短信功能)报告位置信息的功能,只要系统授权,双击手机电源键即可发求助短信。只实现相关功能,app界面未经过任何优化下面是下载链接:https://pan.baidu.com/s/1jIeijTc

2017-09-27 23:26:14 2698 3

原创 基于多线程的随机数生成算法

(只限于学习交流,未经许可,请勿用于商业用途)目前的随机数算法产生的多是伪随机数,产生真的随机数则一般需要获取外界环境的输入。本算法是根据多线程中每个线程获得CPU时间的不确定性而产生随机数,具有无规律性、无法预测、数据分布均匀的特点,虽然随机数产生效率较低,但相信在某些场合可以用的到。算法模型:计算机的每一位都是0或1,如果每一位对应一个独立的线程,在这个线程中不断改变对应位置的值,多位

2017-06-04 11:09:29 3151 4

空空如也

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

TA关注的人

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