自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 资源 (11)
  • 问答 (3)
  • 收藏
  • 关注

原创 Android实现皮肤主题修改

由于我的整个项目的Activity都是继承与自Base ,则只需要在Base的OnCreate方法setContentView函数之前设置好主题,则可以进行自动适配。白色主题的图片是设计师给我的,命名跟默认主题是一致,则只需要全选图片或者selecter或者shape 右键选择重命名,选择以添加文本方式如图。话不多说,直接捋一下我的设计思路,因为我的App默认为黑色主题,因此在做其他皮肤主题时,我的图片命名方式是直接添加后缀。这样的写法是由于我们设置了多主题,可以去自动适配 主题写法如下。

2023-05-30 16:06:42 922 1

原创 BGABanner通过反射方法修改私有属性

通过源码发现 该Drawable的设置在BGABanner这个类中是通过私有属性mPointDrawableResId去接收的。先获取mPointDrawableResId属性字段field1,然后设置可以访问(accessible为true),再设置我们修改修改成为的drawable,如此即可实现。现在我这边需要通过切换皮肤主题 修改选中点的颜色 及banner_pointDrawable的值。即第一个属性是我们需要去修改的。以下是一段是布局代码。

2023-05-30 15:37:15 167

原创 Xcode14.3升级完项目无法运行

把 source="$(readlink "${source}")"修改成source="$(readlink -f "${source}")"找到项目所在路径/Pods/Target Support Files/Pods-xxx/Pods-xxx-frameworks.sh。这样能够在真机上运行 但是当打包到App Store时又会报 如下错误。在Podfile中的最后一个end出添加下面代码。这样打包到App Store就OK了。

2023-05-24 14:13:15 1023

原创 Android WebView使用技巧

使用场景:通过WebView输入用户名和密码进行登录,退出登陆后,再进行登录会默认是之前输入的用户名和密码登录。那么使用如下方式可以设置webview的缓存模式。//设置webview支持javascript脚本。通过WebView进行操作后,不知操作是否成功,则可以使用js回调 (跟后台人员约定好回调方法)使用场景:有些链接是需要进行验证才能进行访问,因此有些WebView是需要传入参数。使用场景:加载纯图片或者其他文本内容,导致网页内容没有自适应界面。1、不使用WebView缓存。

2023-03-21 15:52:31 664

原创 Glide加载图片

使用Glide加载图片,默认情况下在内存中缓存该图片。这样的情况下如果我们保存头像在某个路径,当再次更换头像时可能由于缓存问题,UI上更新的不及时。1、不使用缓存 (该方法不推荐,如果调用方法n次会闪烁n次,不友好)如果我们希望当图片路径不变,图片改变时能够及时刷新有如下方法调用。2、使用签名 (推荐使用)

2023-02-22 15:07:25 1939

原创 Android Studio adb命令

adb shell ifconfig wlan0 //查看ip。Android Studio在IP连接142的手机进行无线调试。如果连接上多台设备则使用 adb -t49 shell 方式。adb tcpip 5555 // 端口。adb devices -l 查看当前设备。

2023-02-17 15:47:15 518

原创 Android 对图片进行指定尺寸压缩

提示:根据图片路径获取Bitmap,当byteCount >10000*10000时调用compress压缩处理无法达到我们想要的50kb以内且耗费的时间稍长。如图我们可以执行图片压缩到50kb大小,一般压缩后的大小会非常接近50kb。经过无数次测试发现有些也有例外。

2023-02-17 15:40:20 817

原创 iPhone深色、浅色对Title的影响及iOS 15+导航栏问题

深色、浅色对Title的影响及15+导航栏问题

2022-09-30 14:29:56 1094

原创 cocoapod中的第三方库怎么引用本地头文件

cocoapod中的第三方库怎么引用本地头文件

2022-06-07 11:50:32 672

原创 Xcode13.3.1 项目执行pod install后报错

Xcode13.3.1 项目执行pod install后报错

2022-06-07 11:39:23 1419

原创 Android App创建Ble服务

先写一个Ble服务AdvertiserService 代码如下/** * Created by lxy on 2021/09/14. */public class AdvertiserService extends Service {// private RecvDelegate delegate; private static final String TAG="AdvertiserService"; String CHANNEL_ONE_ID = "com....

2022-04-26 11:19:14 2535 4

原创 OkHttp拦截器

干货!

2022-04-08 14:00:56 377

原创 TextView实现左边图片右边文字或 上面图片下面文字

实现 左边图片右边文字 布局: <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text_select" android:layout_marginLeft="22dp" android:layout_marginTop="15dp" a

2022-03-09 10:48:21 2405

原创 Android Studio使用adb进行无线调试

adb shelladb devices 查看设备adb tcpip 5555 端口adb shell ifconfig wlan0 ipadb connect 192.168.1.142:5555 连接

2021-12-14 17:33:07 1731

原创 MacOS Android Studio 模拟器运行emulator64-crash-service

起因: 开始MacOS开发项目时可以使用模拟器跑起来的,后面做项目因为项目只支持真机运行,有几个月没有在模拟器上运行了。今天突然写了个测试Demo在模拟器上跑,发现模拟器起不来了,起来的是一个exe的文件,鼠标放到该文件上会有emulator64-crash-service这段文字显示。解决方法网上看了下,说的都不对,有的也很麻烦。于是自己摸索了下发现,进入/Users/用户名文件夹/资源库 记住需要显示隐藏文件如下图进入资源库--->androi...

2021-11-26 11:38:53 517

原创 iOS 内购Guideline 3.1.2 - Business - Payments - Subscriptions被拒5次后审核成功

公司App中已经添加过内购了而且迭代过好几个版本,上周更新发现被拒了。被拒原文如下:发件人 AppleGuideline 3.1.2 - Business - Payments - SubscriptionsWe noticed that your app did not meet all the terms and conditions for auto-renewing subscriptions, as specified in Schedule 2, section 3.8(b) o

2021-11-16 17:15:49 7056

原创 iOS 史上最全App上架流程分享

大概是三年前写的文章吧,我感觉对新手还是挺有帮助的,就写这一篇文章。流程步骤:1.通过新建一个叫minsida的项目进行举例新建好项目如下图所示

2021-11-16 16:59:42 8220 2

原创 Android Studio extractNativeLibs使Apk瘦身

项目配置如下compileSdkVersion 29targetSdkVersion 23minSdkVersion 23代码之前每次打包时大约60M左右,由于项目需求,添加了AndServer这个库按照Git配置如下buildscript中dependencies { classpath 'com.android.tools.build:gradle:3.4.1' classpath 'com.yanzhenjie.andserver:plugin:2.

2021-10-22 18:15:31 1409

原创 SDWebImage加载大量网络图片且图片尺寸较大问题解决

项目中TableView加载多条数据,发现服务器返回的图片大的居然达到了几十兆,滑动起来卡顿很严重,非常影响体验。解决代码如下:SDImageIOCoder类中decodedImageWithData方法内添加调用方法如:#pragma mark by lxy Add-(UIImage *)compressImageWith:(UIImage *)image{ float imageWidth = image.size.width; float i...

2021-10-15 18:36:28 1363

原创 Android11 targetSdkVersion30 getPath方法被移除

Android 11getMethod("getPath");方法被移除了。但是提供了getDirectory,使用storageVolume.getDirectory().getAbsolutePath()来获取存储路径。获取存储路径方法代码如下: Class<?> storageVolumeClazz = Class.forName("android.os.storage.StorageVolume"); //by lxy ...

2021-10-11 16:43:02 886

原创 Mac 使用命令行对apk进行签名

jarsigner -verbose -keypass <密钥口令> -storepass <密钥库密码> -keystore <密钥库> -signedjar <签名apk路径> <待签名apk路径> <alias别名>jarsigner -verbose -keypass 密码 -storepass 密码 -keystore /Users/.../xxx.jks -signedjar 指定生成apk路径.apk 待签名ap.

2021-10-09 10:22:57 991

原创 Fragment中申请权限并onRequestPermissionsResult回调

权限申请是Fragment自身去申请代码如下: //by lxy modify private void startFolderActivity(int pos) { index = pos; if (SplashActivity.checkPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) && SplashActiv

2021-10-09 10:15:32 1734

原创 Android SpannableStringBuilder实现字体富文本

很多开发者习惯在.xml文件中直接拼接多个控件实现字体富文本效果,个人觉得不可取。项目中需要使用不同字体颜色的文本,那么我们可以使用SpannableStringBuilder来实现项目中代码如下 /*USB音量/默认开机音量*/ @Override public void onGetUSBVolume(int level) { Log.e(TAG, "onGetUSBVolume: "+level); if (av.isUP5()){

2021-09-23 14:31:56 492

原创 Android String转Byte[]+Ble服务

说明:项目中需实现Android/Linux设备作为服务端,客户端为iOS或者Android设备进行Ble连接那么Android需要代码开启Ble服务,我设计了一个switch开关,打开/关闭则对应开启/关闭Ble服务。因为我们是对特殊的设备进行特殊功能服务,所有我们决定把蓝牙的Mac地址写入到厂商数据中,并设定特定的读、写、广播特征。部分代码如下获取蓝牙Mac地址 /** * 获取本机蓝牙地址 */ private String getBluetoo..

2021-09-23 14:23:23 607

原创 Android OAuth2.0 令牌过期自动刷新

说明:做项目Spotify 实现OAuth2.0登录 根据API进行数据获取、交互等,获取的令牌有效期只有30分钟,令牌失效那么API获取数据就会失败,这就要实现令牌过期自动刷新功能了。另外API中接口使用了POST、GET、PUT、DELETE等请求方式,我们不可能每次都要去写这些不同网络请求,于是有了封装网络请求通吃POST、GET、PUT、DELETE等请求方式并实现自动刷新令牌代码其中第一个没有传入Context上下文参数的是不带菊花的,因为有时候需要直接加载或者默默加载数据,第二种是.

2021-09-17 18:44:01 516

原创 Android 持久化数组(List/ArrayList)方法---MMKV

说明:1、我是从iOS转Android开发 现在应该是两个多月了吧 Android、iOS来回搞还好点 要是Android一段时间没去编码 那么感觉忘记挺快 第一篇Android文章记录一下2、轻量级的持久化保存我iOS最开始是使用NSUserDefault,但是这个系统持久化存储方法用的多了就会知道不好用,除了读写速度慢有时候好像还会丢,Android的SharedPreferences似乎也不太好用。在一次偶然的情况下,发现微信使用的持久化存储框架MMKV,这个用起来感觉就很舒服。And...

2021-09-17 17:56:14 3626

原创 iOS 为View添加蒙版 当点击背景View移除

在自定义View中 设置背景蒙版 bgView = [[UIImageView alloc] initWithFrame:UIScreen.mainScreen.bounds]; bgView.image = [UIImage imageWithColor:RGB_A(17, 17, 17, .5)]; bgView.userInteractionEnabled = YES; bgView.tag = 1; [[UI...

2021-07-14 11:07:33 550

原创 OC 只有图片的按钮 让图片左对齐

举个栗子 代码如下 为了让小图片拥有较大的点击范围(只要是边缘也处于点击范围) [btn_off setImage:[UIImage imageNamed:@"hifi_off"] forState:(UIControlStateNormal)]; [btn_off addTarget:self action:@selector(bgAction) forControlEvents:(UIControlEventTouchUpInside)]; ...

2021-07-14 10:57:32 193

原创 OC富文本常用笔记

备注 :下面方法都可以写一个工具类封装 可改写成类方法(+)1、富文本字体大小#pragma mark 富文本字体大小- (NSMutableAttributedString *)orangeString:(NSString *)orangeStr changeString:(NSString *)changeString font:(UIFont *)font{ NSMutableAttributedString *attr = [[NSMutableAttribute...

2021-07-09 15:35:43 491

原创 OC Pop到指定VC

for (UIViewController *controller in self.navigationController.viewControllers) { if ([controller isKindOfClass:[AddDevVC class]]) { AddDevVC *vc = (AddDevVC *)controller; [weakSelf.navigationController popToViewControll...

2021-04-28 15:42:44 404

原创 MMDrawerController 获取当前VC进行Push和Pop

当使用MMDrawerController作为根试图控制器是 在Model或者View中获取当前VC并进行Push或者Pop直接贴代码了+ (UIViewController *)getCurrentVC{ // 定义一个变量存放当前屏幕显示的viewcontroller UIViewController *result = nil; // 得到当前应用程序的主要窗口 UIWindow * window = [[UIApplication shar...

2021-02-02 19:15:14 193

原创 OC 仿安卓ByteBuffer

做项目时需要拆包、组包 未方便进行字节清算、处理封装一个iOS版的ByteBuffer安卓同事发了一份代码 如下 byte[] data = new byte[1024]; ByteBuffer byteBuffer = ByteBuffer.wrap(data, 0, 1024); byteBuffer.order(ByteOrder.LITTLE_ENDIAN); byteBuffer.put(SCREEN_COPY_VE...

2021-02-02 19:09:54 279

原创 OC 设置图片圆角 图片不变形等问题

1、设置圆角_iconImageV.layer.cornerRadius = _iconImageV.width/2;_iconImageV.layer.masksToBounds = YES;2、图片加载不变形 _img_cover.contentMode = UIViewContentModeScaleAspectFill; _img_cover.clipsToBounds = YES;...

2020-11-09 16:26:38 661

原创 iOS 设备唯一标识UUID获取

获取UUID 写了两个文件CMKeyChain CMUUIDManager用了好几年 表示挺好用的 分享下 该方法App卸载 UUID不变 可上架AppStore 本人已上线N个该方法App 相当于安卓的IMEI用法很简单 写一个类方法就行了 导入头文件#import "CMUUIDManager.h"代码如下+ (NSString *)UUID{ //获得UUID存入keyChain中 NSUUID *UUID=[UIDevice curre...

2020-09-14 14:57:22 669

原创 MMDrawerController第一次加载侧边栏高度问题

引言:当在CenterControl侧滑进入侧边栏 第一次加载侧边栏高度不对 因为我的侧边栏是添加导航栏的 高度会有个先升后恢复到初始的事情 只有App启动是每一次的第一次点击按钮进行侧滑才会出现这个问题 但是当侧滑加上动画时就不出现这个问题测试: iPhoneSE2代 第一次加载侧边栏高度为623 非第一次启动603(正常) iPhone11第一次加载侧边栏高度为852 非第一次启动808(正常)解决方案以及侧滑代码 Ho...

2020-09-11 17:50:20 136 1

原创 iOS 图片虚化

项目中应用虚化图片作为背景图 效果图如下代码实现#pragma mark 虚化背景图片+ (UIImage *)blurryImage:(UIImage *)image{ if (image==nil) {// NSLog(@"error:为图片添加模糊效果时,未能获取原始图片"); return nil; } //模糊度, // if (blur < 0.025f) { /...

2020-09-11 17:35:12 526

转载 iOS 指定大小压缩图片最优解决方法

项目中的需求是把网络图片保存到沙盒代码如下 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; //转换为图片保存到以上的沙盒路径中 UIImage * currentImage = [UIImage imageWithData:data]; NSString *path = [PublicObj imagePath:self.play...

2020-09-11 15:00:17 953

原创 解决 arr containsObject 方法每次都返回NO的问题

当指针赋值 无论你改变或者不改变属性值 每次都是返回YES 因为地址是没有改变的 看下面代码ListArchive *obj1 = [[ListArchive alloc]init]; ListArchive *obj2 = [[ListArchive alloc]init]; ListArchive *obj3 = [[ListArchive alloc]init]; ListArchive *obj4 = [[ListArchive alloc]init];...

2020-08-20 11:00:17 263

原创 UISwitch OFF状态下默认颜色设置

_rightSwitch = [[UISwitch alloc]initWithFrame:lxy(KScreenW-Width(66),7, Width(60), 26)]; _rightSwitch.onTintColor = UIBGColor; //On状态下颜色 _rightSwitch.transform = CGAffineTransformMakeScale(0.75, 0.75); [_rightSwitch addTarget:self acti...

2020-08-08 14:00:13 1937

原创 iOS开发使用底层库TagLib进行音频解析

1.概述TagLib是KDE开源项目的一个很有用的C++函数库,它可以用于读取各种格式的音频文件的ID3信息,如歌名、歌手、专辑、采样率等,同时也可以对以上部分的属性做出修改。2.如何获取TagLib库我们去此网址https://taglib.org/选择最新的或者适合自己的Taglib库,本文中使用最新的TagLib 1.11.1。2.1下载后解压文件下载完成点击解压文件,可得到taglib-1.11.1文件夹,由于是C++库,需要用cmake编译,下面介绍如何编译。2.2 ...

2020-06-17 10:29:35 340 6

ByteBuffer.zip

仿安卓ByteBuffer 完美组包、拆包

2021-02-02

UUID.zip

获取iPhone唯一标识的方法 自己用了好几年 使用这个方法上架到AppStore的App有10多个

2020-09-14

iOSDemo 仿安卓TextInputLayoutView

封装的TextInputLayoutView除了安卓的常规功能 还添加了可能使用到的数字键盘 1.属性keyBoadType 当传入为1时说明键盘只允许输入数字 当传入数字为2时除了数字还能输入小数点 而且在数字键盘上添加了完成键 按下完成 可以实现键盘的收缩功能 纯原生代码 2.若keyBoadType赋值了的话,数字输入自动框限制功能,默认只能输入6个字符,若赋值为1,则0不能作为第一个输入的字符,若赋值为2,如果是存在小数,则只能输入小数点后2位,而且小数点不能作为第一个输入的字符 3.属性rightImageStr 传入输入框右边的图片名 如果传入的为空 那么右边默认不使用图片 4.typedef BOOL (^EditField) (NSInteger tag); //输入框正在编辑事件 5.typedef void (^BtnBlock) (NSInteger tag); //右边按钮点击事件

2018-10-26

仿安卓TextInputLayoutView

封装的TextInputLayoutView除了安卓的常规功能   还添加了可能使用到的数字键盘 1.属性keyBoadType  当传入为1时说明键盘只允许输入数字  当传入数字为2时除了数字还能输入小数点  而且在数字键盘上添加了完成键  按下完成 可以实现键盘的收缩功能  纯原生代码 2.若keyBoadType赋值了的话,数字输入自动框限制功能,默认只能输入6个字符,若赋值为1,则0不能作为第一个输入的字符,若赋值为2,如果是存在小数,则只能输入小数点后2位,而且小数点不能作为第一个输入的字符 3.属性rightImageStr  传入输入框右边的图片名 如果传入的为空  那么右边默认不使用图片   4.typedef BOOL (^EditField) (NSInteger tag); //输入框正在编辑事件 5.typedef void (^BtnBlock) (NSInteger tag);  //右边按钮点击事件

2018-10-25

Widget开发Demo

widget开发Demo,封装.framework进行代码数据共享,宿主App和widget都能够使用NSUserDefault保存的数据

2018-09-20

封装好的.frmaework

该Demo主要是提供给新手。通过Blog结合Demo能够使得.framework封装快速上手,听说Blog和Demo才更配

2018-09-19

iOS原生项目集成5+SDK

史上最全的iOS 集成5+SDK Demo,本demo尽可能的减少项目运行内存及大小,以最少的步骤集成成功

2018-08-15

iOS MD5加密(常规、32位大小写、16位大小写等)

MD5各种加密。 番外:对文本+key进行md5 code32加密 再进行base64代码 /** 该方法是对文本+key进行md5 code32加密 再进行base64 @return 加密后的text */ - (NSString *)getSecretKeyWithString:(NSString *)interface{ // NSString *str = @"123456"; //text NSString *key=@"34A361EB5AAE0079B34C0D78D66C9F5D"; //key NSString *strAddKey = [NSString stringWithFormat:@"%@%@",interface,key]; //text+key NSString *MD5UtilCode32 = [self getMd5_32Bit_String:strAddKey]; //进行MD5UtilCode32 //对加密的文本 进行base64 NSData *data = [MD5UtilCode32 dataUsingEncoding:NSUTF8StringEncoding]; NSString *base64String= [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; //返回加密后的字符串 return base64String; }

2018-07-31

抓包工具paros

运行paros.jar,保证iPhone/android和电脑在同一网段。 具体参考包里面写好的文档<<抓包工具paros使用>>

2018-07-31

OC原生文字转语音功能Demo

iOS OC版本 文字转语音 AVSpeechSynthesizer: 语音合成器, 可以假想成一个可以说话的人, 是最主要的接口 AVSpeechSynthesisVoice: 可以假想成人的声音 AVSpeechUtterance: 可以假想成要说的一段话 该Demo需真机测试 下载配置好证书直接运行使用

2018-07-31

OC GZIP解压/压缩ISO-8859-1编码格式

类似于安卓GZIPInputStream

2017-05-04

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

TA关注的人

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