- 博客(73)
- 资源 (20)
- 收藏
- 关注

转载 公共技术点之面向对象六大原则
在工作初期,我们可能会经常会有这样的感觉,自己的代码接口设计混乱、代码耦合较为严重、一个类的代码过多等等,自己回头看的时候都觉得汗颜。再看那些知名的开源库,它们大多有着整洁的代码、清晰简单的接口、职责单一的类,这个时候我们通常会捶胸顿足而感叹:什么时候老夫才能写出这样的代码! 在做开发的这些年中,我渐渐的感觉到,其实国内的一些初、中级工程师写的东西不规范或者说不够清晰的原因是缺乏一些指导原则。
2017-12-05 10:41:02
724
原创 关于我让chatGPT帮我用python写GUI这件事...
在使用ChatGPT编程过程中,有好的体验也有比较不好的体验,例如有个问题但是得不到好的回答,有些需求可能没那么容易实现,或者难以描述清楚具体的需求等…但!总得来说好的体验更多,ChatGPT给我的正反馈是很足的,让我这个刚接触py语言的人来说,节省了很多的学习成本。
2023-07-06 20:58:06
364
原创 反编译之You need to use a Theme.AppCompat theme (or descendant) with this activity.
You need to use a Theme.AppCompat theme (or descendant) with this activity.
2023-06-26 11:30:00
307
原创 git commit -m命令扩展:多行注释
在命令行上使用git时,你可能已经使用了消息标志(-m)。它允许开发人员在调用git commit时携带注释一起提交消息。git commit -m "my commit message"但是这种方式只能写一行的注释,如果你想要对commit的内容进行详细的讲解,以便仔细检查提交的文件,那你可能需要写多行注释,这个命令就不适用了。今天,我了解到git commit命令接受多个消息标志,也就是多行注释????事实证明,你可以-m多次使用该选项。git文档包括以下段落:即 “如果给出了多个−m选项
2020-07-10 18:49:30
2951
2
原创 Android应用开发之统计App时长
闲谈好久没更新了,前两个月就定了标题,现在才开始动手写。其实之前觉得这种获取App累积时长的方法(以下内容会介绍到)不唯一,可能有很多种,所以想收集多点资料,后来看到腾讯和360都是这么实现的,那么现在就开始介绍一下这个需求。相信做游戏sdk开发的最近经常有这个需求,为什么是游戏sdk开发需要?而且为什么是最近?首先回答第一个问题,这个需求主要是要限制用户对于app的使用时长,一般较为常见的是限制游戏游玩时长,其次,很少有Android应用有统计使用时长这一个需求。第二个问题,为什么是最近?没.
2020-07-08 18:40:12
4438
1
原创 Android全面检测设备是否模拟器
前言前段时间工作有个需求,要求检测App是否在模拟器环境下运行,就像在有些手机游戏上可以看到这个功能乍一看蛮简单的,后来我查了一下资料,然后头都大了······ 这多亏了国内pc端模拟器的发展,现在市面上的模拟器越来越多,也越来越“逼真”了,模拟器和真机的区别在逐步缩小,这就使得模拟器的检测存在偏差,不管有多小,偏差总是会存在的,如何降低这种偏差值,就是这篇文章像讨论的内容。先来看一下我...
2020-03-27 18:01:19
6673
1
原创 把Android logcat信息显示在你的手机
前言年前有个想法,过去后端调试接口的时候,需要对接网络请求的各个参数,每次要调试时的流程都是(对于Android客户端的我来说):打开Android Studio → 连接设备或模拟器 → 开启logcat → 日志筛选 …这样确实有点麻烦,有没有一种方式把网络请求和返回的日志全部打到Demo App里边显示?答案当然是有!上个demo图:由于涉及公司接口的安全性,这里就不把具体的...
2020-03-25 15:17:09
1505
原创 当你输入"apktool b -f [回编译文件] -o [输入的apk文件]"命令后
下面的记录是在我敲入以下命令后遇到的错误:(相信学习逆向的同学一定不会生疏:)apktool b -f E:\decode -o E:\Decompile.apk 回编译出现文件名或扩展名太长错误解决方案:减少apktool.yml文件中doNotCompress不加密的文件回编译出现“class not find brut.androidlib.meta.MetaInfo...
2019-11-22 11:36:15
2035
2
原创 做一个适配Android8.0以上版本的悬浮窗
突然有了个悬浮球的需求,赶忙去网上搜索了一下,发现大部分都是停留在几年前,为了适配Android 6.0版本甚至6.0以下实现的代码。跑了一遍之后出现了不少问题,首先第一个:android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity...
2019-10-22 15:28:07
3715
1
原创 Android逆向——反编译APK改代码
如果你想反编译一个简单的APK文件,修改里面的代码,那么你不妨尝试看一下,还是不难的。为什么说是简单的APK文件呢?因为复杂一点的,比如大企业的app,是不可能让你如你所愿的,他们一般会通过复杂的分包和混淆,让你无法获取代码的可读性,读都读不了,更何况是动手改代码了~系统:Windows一、apktoolapktool工具的作用:我们可以通过apktool去查看apk的Android...
2019-07-21 16:53:22
12459
原创 Androidの教你做闪屏启动页
老规矩,效果图如下:源码如下:https://github.com/ok406lhq/StartPageDemo启动页的开发主要包括了开屏闪屏和广告页的实现,效果如上图,具体的实现如下。#####1、闪屏设计实现方式有比较多种,其中有一种是通过Intent跳转的方式,跳转到一个布局只有布局中添加了闪屏图片的SplashActivity中,实现短暂的闪屏效果。这样做有一个小缺点(也可以忽...
2019-06-25 09:25:20
1951
原创 把Android的下载更新做成后台服务
做Android的版本更新,首先要有一个接口从网络获取最新版本,再根据最新版本的url,也就是下载链接进行下载安装。总的流程就是这样,这篇博客就不讲如何获取最新版本了,这个需要就跟写接口的哥们好好交流一下了~#####那么我们开始吧!一开始我做的这个功能是这样的:(上图!)后来发现,这样用户体验不是很好,需要等到进度条读完才能安装更新,这过程中什么都不能干,的确有点体验差。如果将Apk文件...
2019-03-11 09:39:24
2084
原创 Android如何获取通讯录?
最近开发Android项目中遇到需要用到通讯录的需求,谷歌百度查了一下,根据自己的需求,利用ContentProvder的ContentResolver来获取的通讯录并封装的一个工具类ContactUtils/** * 获取通讯录工具类 * 返回的数据: * [{ * "name": "xxx", * "note": "呵呵呵呵", * "phone": "13333333332&qu
2019-03-11 09:28:23
2757
2
原创 Vue城市选择器和日期选择器插件的使用
直接上图:需要完成的需求是这个页面的实现:点击“1”跳转到“2”,在页面“2”中可以在“3”中选择你的家乡,在“4”中可以选择你的生日。其中,用到的组件有两个,一个是城市选择器element-china-area-data,另外一个是日期选择器vue-datepicker接下来介绍一下这两个选择器的使用,github地址已经在上面标明了,点击组件的名字即可抵达。一、城市选择器elem...
2019-03-11 09:27:44
3157
原创 React Native微信分享
捣鼓了有一段时间了,终于搞完这个微信分享的接口接入模块。直接看效果:第一步首先你要有自己的打包签名完的项目,运行在你的手机设备上,因为后面需要用到应用签名。(具体怎么获得后面会讲解) 在自己的项目中,我们需要先把微信分享的布局写好,按照上面的效果图,在这里贴出代码,这个项目的源码在这里。我把它上传到了github上了,大家自行参考。/** * Created by la...
2018-09-15 20:33:59
2255
原创 React-navigation的回调跳转
源码在此:传送门Android中界面跳转传值我们用到了Bundle或者接口回调的方式,而React Native中界面跳转是什么样的呢?这篇博客就详细讲讲react-navigation跳转回调的实现方式先看一下案例图:需要准备案例中运用到的React Native依赖库有: react-navigation 和react-native-video 安装和使...
2018-08-19 17:26:31
2284
原创 react-native-video使用攻略
源码在此 仅供参考一、简介react-native-video是一个可以播放视频的组件,它的用法简单,功能完备,是React native项目中很好用的一个Video播放的组件。它的功能主要有以下10个: 1. 控制播放速率 2. 控制音量大小 3. 支持静音功能 4. 支持播放和暂停 5. 支持后台音频播放 6. 支持定制样式,比如设置宽高 ...
2018-08-07 16:42:57
6778
1
原创 React Native抓取网络请求制作电影列表
前言构建项目 关于构建RN项目的环境,具体怎么做请参照#搭建开发环境 - React Native中文网新建项目 可以选择git clone一个空项目或者在react native的项目目录下执行:react-native init DemoPro(项目名)开始设置数据源这是拉取真正数据部分,这部分是通过fetch命令来抓取json数据,这里用到了豆瓣的一...
2018-08-06 18:07:56
1672
原创 React Native动态传递参数
众所周知,React Native的一个重要的特点是它的组件化,也就是可以将屏幕中一个个View当成一个个组件提取出来,然后自由搭配使用。这对于UI界面的设计提供了很大的便利。话不多说,直接上效果: 这是个自定义的顶部标题栏,当然我们也可以使用react-navigation(本次案例项目使用的导航库是react-navigation,具体使用可以参考☜☜的链接)自带的顶部标题栏...
2018-07-27 16:40:17
3162
原创 react-native-video中文文档
简介一个react-native视频播放组件,可以实现视频播放的效果。 要求react-native版本 >= 0.40.0;对于RN支持0.19.0 - 0.39.0,请使用1.0之前的版本。最新版本(3.0.0)改动3.0版对现有行为进行了许多更改。 请参阅#更新目录安装使用更新一、安装使用npm安装依赖库:npm install -...
2018-07-04 15:14:14
9447
1
原创 RN React-navigation使用全攻略
源码在此 仅供参考一、简介根据React Navigation官网文档描述:Learn once, navigate anywhere.React Navigation的诞生,源于React Native社区对基于Javascript的可扩展且使用简单的导航解决方案的需求。 React Navigation是Facebook,Expo和React社区的开发者们合作的结...
2018-06-28 16:10:43
4756
原创 《ES6标准入门》学习心得1:let和var
let和var的区别let是ES6新增的一个命令,用于声明变量,用法类似于var,但是还是有所不同,直接上代码:varvar a = [] ;for (var i = 0;i<10;i++){ a[i] = function(){ console.log(i); }; }a[6]();输出结果为:10。这说明var声明的是全局变量,在代码块...
2018-05-19 16:47:59
772
原创 Android开发遇到的Set集合的运用
正式实习一个星期有余了,这半个月经历了找工作,找租房,再到安定下来,地铁路线也渐渐熟悉了下来,这对路痴的我来说真是一个冒险。也从一开始的懵逼看项目代码到现在偶尔能完成一些小需求,学到了很多东西。~ 记一个需求: 用户需要根据所选的货物(一个货种可以选择多个货物,例如蔬菜,你可以选菜花,芥蓝等),在收费信息中显示第一个所选货物的种类,看下图所示: 上图所示:整个架构是一个ViewPag...
2018-04-25 11:24:45
3712
1
原创 TCP为什么需要三次握手,四次挥手?
首先第一个问:为什么是三次握手?不能是两次/四次/等等?三次握手: “喂,你听得到吗?” “我听得到呀,你听得到我吗?” “我能听到你,今天balabala……”两次握手: “喂,你听得到吗?” “我听得到呀” “喂喂,你听得到吗?” “草,我听得到呀!!!!” “你TM能不能听到我讲话啊!!喂!” “……”四次握手: “喂,你听得到吗?” “我听得到呀,你听...
2018-03-11 00:21:02
2121
原创 关于解决Android Studio配置文件和模拟器在C盘空间不足的问题
看了很多篇的博客,讲述如何将装在C盘中的Android Studio的缓存文件、avd模拟器文件搬家。 自己尝试了一下发现缓存文件不会很多,这个我不用转移,因为缓存文件我在安装时已经指定在别的盘符中了。如果需要的话可以参考这篇博客 Android-Studio 缓存文件夹配置接下来我们尝试将模拟器avd目录转移,这个只需要进入“C:\Users\Administrator.android ...
2018-03-08 19:25:10
6756
1
原创 Android3.0升级后出现ButterKnife失效报错的问题解决
Error:Execution failed for task ':reading_routine:javaPreCompileDebug'.> Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to co...
2018-03-08 19:03:58
1503
原创 Android 获取手机中微信聊天记录
首先我们要知道,微信的聊天记录一般是不提供给我们获取的,所以一般情况下我们手机没root的话就拿不到了。就算是root后的手机,想要获取微信的EnMicroMsg.db文件并且解密它、打开它也有点难度。下面我们就来演示怎么从安卓设备的手机中拿到微信的数据文件吧~实验软件 :Android Studio实验设备:Root过的真机一部一、拿到数据库文件EnMicroMsg.db一
2018-01-10 13:18:42
20736
8
原创 关于自定义View中wrap_content属性失效的问题
我们在使用自定义控件的时候,有时候会发现当我们设置子View的属性为wrap_content时,发现它最终展现的效果跟我们说预想的不一样,它展现的是match_parent的效果,这是为什么呢?先把问题抛出来,接下来就来简要讲解一下。问题就出在我们自定义View时的绘制视图阶段,即onMeasure()设置View宽/高这一步。 我们在自定义View的onMeasure方法中,是这样写的:
2018-01-09 20:32:41
3056
1
原创 EventBus的使用技巧和解析
EventBus由greenrobot贡献(该组织还贡献了greenDAO),一个Android事件发布/订阅轻量级框架。 它是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。
2018-01-03 21:31:55
2594
原创 RecyclerView的使用技巧
RecyclerView简介从Android 5.0开始,谷歌公司推出了RecylerView控件,RecyclerView是support-v7包中的新组件,Google的官方文档中介绍的,RecyclerView用于在有限的窗口展现大量的数据。其实体现该作用的组件已经有了ListView、GridView,那么为什么还要有RecyclerView?下面就会做介绍啦~
2017-12-27 19:30:44
724
原创 很容易混淆的URL和URI
其实就是这个”L”和”I”的区别。“L”是指Locator定位符,它能精确到点的定位一个资源的位置,侧重点是定位资源,它是URI的一个子集,它也比URI更强,因为它不仅可以”区别“资源,还可以“找到”资源“I”是指Identifies标识符,它是用来标识一个资源的,侧重点是标识资源。举个例子,URI可以看成是一个人的身份证,它可以区别标识每一个人,URL可以看成是一个人的卫星定位,每一个人的定位
2017-12-21 16:16:25
1138
原创 Failed to push the item null解决方法
当我们在Android Studio中向Android Device Monitor中的文件夹中传入文件时,可能会报出这个错误:这是我向sdcard/emulated/0中传入文件时出现的错误,当然,你要先得打开该文件的目录结构。可能会出现点击文件夹展开不了子文件的情况,这时候,你就到adb.exe所在的目录,打开命令行,输入adb root即可刷新文件权限,这时候你就能看到子文件了。
2017-12-16 10:21:39
3691
原创 Java7特性中,abstract class和interface有什么区别
先上一道牛客网上面的Java题目: Java7特性中,abstract class和interface有什么区别。 A、抽象类可以有构造方法,而接口中不能有构造方法 B、抽象类中可以有普通变量,接口中没有普通变量 C、抽象类中不可以包含静态方法,接口中可以包含静态方法 D、一个类中可以实现多个接口,但是只能继承一个抽象类
2017-12-09 15:37:19
3664
3
原创 安卓设计模式の观察者模式
观察者模式是一种使用频率非常高的设计模式,最常用的地方就是订阅-发布系统。这个模式的重要作用就是将观察者和被观察者解耦,使他们之间的依赖更小甚至没有。定义定义对象一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于他的对象都会得到通知并被自动更新。模式的使用场景关联行为场景,这个关联是可拆分的。将观察者和被观察者封装在不同的对象中,可以各可以各自独立的变化。
2017-12-05 11:29:06
647
原创 安卓设计模式の装饰者模式
Android设计模式源码解析之装饰者模式1. 模式介绍模式的定义装饰模式也叫做包装模式,是结构型设计模式之一。目的是为了给一个类或对象增加行为。可以是继承的一种替代。 装饰模式也很好理解,比如一个人,给他装上火箭就能上天了,装上潜水服就能下海了,但本身还是个人,人没有任何变化。装饰者模式的的定义是动态地给一个对象添加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。
2017-12-05 11:16:44
652
原创 安卓设计模式の代理模式
Android设计模式源码解析之Proxy模式 Binder中的代理模式再说Binder中的代理模式之前,我们需要先看看代理模式的简单实现,这一部分内容采用了《JAVA与模式》之代理模式这篇文章中的代码示例和uml类图。1. 模式介绍代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。模式的使用场景就是一个人或者机构代表另一个人或者机构采取行动。
2017-12-05 10:43:14
655
原创 安卓设计模式の外观模式
Android设计模式源码解析之外观模式(Facade)1. 模式介绍模式的定义外观模式(也成为门面模式)要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。它提供一个高层次的接口,使得子系统更易于使用。模式的使用场景在设计初期阶段,将不同的两个层分离;在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用时也都会产生很多很小的类,这本是好事,但也给外部调用它们的用
2017-12-05 10:36:41
764
原创 安卓设计模式の责任链模式
Android设计模式源码解析之责任链模式 1. 模式介绍模式的定义一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。模式的使用场景一个请求可以被多个处理者处理或处理者未明确指定时。2. UML类图角色介绍Client:客户端Handler:抽象处理者ConcreteHandler:具体处理者3. 模式的简单实现简单实现的介绍责任链模式非常简单异常好理解,相信我它比单例模式还简单易懂
2017-12-05 10:30:00
658
原创 安卓设计模式の策略模式
Android设计模式源码解析之策略模式 1. 模式介绍模式的定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。注:针对同一类型操作,将复杂多样的处理方式分别开来,有选择的实现各自特有的操作。模式的使用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。需要安全的封装多种同一类型的操作时。出现同一抽象多个子类,
2017-12-05 10:27:35
645
MonitorDemo.rar
2020-03-27
TextLogDemo.rar
2020-03-25
apktool反编译工具.zip
2019-06-26
RN开发指南
2019-03-27
图书管理系统论文加源码
2017-10-13
校园网系统设计
2017-09-24
Linux配置WWW服务器Apache
2017-09-24
Linux配置DNS服务器及实现简单的负载均衡
2017-09-24
网上选课系统
2017-09-24
安卓事件传递机制代码
2017-09-19
SQLcipher.exe
2017-09-17
计算smali中变量field的个数
2023-07-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人