- 博客(50)
- 资源 (13)
- 收藏
- 关注
原创 安卓Monkey测试屏蔽特殊按键
有时候我们需要屏蔽掉Monkey脚本的部分按键,先看看Monkey的key事件生成代码:外部获取MonkeyEvent是通过development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java里的getNextEvent()来获取的。 /** * if the queue is empty, we generate events first * @return the first
2020-07-29 13:56:54
2337
原创 安卓在活动左上角添加返回键
这里分多种情况讨论,暂时列举两种,后续可能会补充。1.如果当前使用的活动继承于AppCompatActivity类在活动中先执行下面方法,启动返回键按钮 getSupportActionBar().setDisplayHomeAsUpEnabled(true);然后重写onOptionsItemSelected方法,对返回键进行事件监听: @Override public boolean onOptionsItemSelected(@NonNul..
2020-05-18 15:25:43
3839
1
原创 安卓使用暗码启动APP
何谓暗码?就是你打开电话应用,点击拨号盘输入的一串字符。在framework层开发一些测试工具时,我们不希望普通用户能接触到这类测试工具,就会经常使用到暗码这种方式来启动APP。具体操作过程如下:1.先隐藏掉APP的应用图标即删除APK源码目录下的AndroidManifest.xml中的<category android:name="android.intent.category.LAUNCHER" />这句代码。删除应用图标之后,用户就不能再通过点击图标的方式进入应.
2020-05-18 15:05:56
1543
原创 安卓禁用EditView原生复制粘贴全选操作
在部分场景下,我们需要把EditVIew的原生复制操作给屏蔽掉。比如说定制化开发,不希望安卓原生的部分界面出现在用户面前,以提高用户体验。其实很简单,只要重写下ActionMode.Callback()事件就可以了,如下 editview.setCustomSelectionActionModeCallback(new ActionMode.Callback() { ...
2020-04-10 14:49:47
851
原创 在APP应用中运行cmd命令
这个网上其实也有很多相关东西,简单,但是要有平台签名。这里只说下重点。运行cmd命令:Runtime.getRuntime().exec(cmd);在AndroidManifest.xml中进行如下声明:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tool...
2019-12-31 16:14:10
1970
原创 用代码打开MTKLogger
最近有个需求,要求制作一个用于Monkey测试的APK,然后在开始测试的时候打开MTKLogger,结束测试的时候关闭掉。网上大多都是adb命令形式,有点难搞,后面问了下师傅,把问题解决了,这里就借花献佛了。开启MTKLogger:public void openMtkLog() { Intent intent = new Intent(); /...
2019-12-31 15:52:46
969
原创 Ubantu修改系统配置导致进不了系统补救措施
开机过程中不断的按Esc键(有的版本是长按shift),选择ubantu高级选项,进入;选择recovery mode模式启动,找到“ro recovery nomodeset”这句话,删掉改成“rw single init=/bin/bash”然后按ctrl+x键,进入单用户模式,现在就可以对系统配置文件进行修改了,改回正确的配置应该就能重进系统了。...
2019-10-24 10:12:11
655
原创 安卓设置FloatingActionButton图片居中
给FloatingActionButton组件添加app:fabCustomSize属性,值与layout_width和layout_height的值相等即可。 <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/add_alar...
2019-09-25 15:40:43
4064
3
原创 【Android学习笔记】 运行时权限及内容提供器的基本使用
运行时权限在Android6.0版本之后引入,用户可以对应用程序进行选择性授权,即使拒绝了这个权限,依旧可以使用该应用的其他功能。Android所有的危险权限一共有9组24个权限:Dangerous Permissions: group:android.permission-group.CONTACTS permission:android.permissio...
2019-08-30 16:20:18
413
原创 Java游戏开发——俄罗斯方块
游戏介绍俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机的游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,游戏过程中仅需要玩家将不断下落的各种形状的方块移动、翻转,如果某一行被方块充满了,那就将这行消除。当窗口中无法再容纳下落的方块时,游戏结束。可见俄罗斯方块的需求如下:①由移动...
2019-08-01 19:51:25
14013
2
原创 配置apache2.4时出现Forbidden You don't have permission to access / on this server. 问题解决方案
安装完wampserver后,通过127.0.0.1或localhost访问网页可以正常访问;但是通过其他电脑对服务器的公网ip地址进行访问,一直显示forbid....如图:查阅博客帖子,发现这个问题常规的解决办法是修改httpd.conf中的两处配置。我的解决过程是先将<Directory /> Options FollowSymLinks ...
2019-07-10 17:01:56
96121
5
原创 算法排序(六)——快速排序法
快速排序法一般来说可以分为三种,分别是:①基础快速排序法②双路快速排序法③三路快速排序法下面分别对以上三种快排进行梳理。基础快速排序法排序思路:首先传入待排序数组,使用变量l表示数组下标起点,使用变量r表示数组下标终点,然后取数组第一个元素e做中介,使用循环逐步将数组元素分为比e小和不比e小的两部分;使用变量j记录左侧比e小的元素个数下标(初始值为l),循环内部使用变量i从...
2019-05-10 20:43:49
404
原创 如何在自己的顶级域名基础上开辟新的子域名
因为最近的一些需求,需要使用子域名去映射到其他服务器上,所以记录下过程。配置过程很简单,对指定域名重新添加一条解析记录,主机记录填子域名,将记录值指向另一个ip地址就可以了。①打开域名的解析设置,添加解析记录②假如我想在自己的域名之前开辟个abc的子域名,直接在主机记录填写abc即可,记录值填ip地址完工:...
2019-05-05 16:43:39
838
原创 phpStudy配置域名访问ip
作者这里使用的是阿里云域名解析,可以分为以下几步进行:①打开域名解析,选定域名,配置域名解析设置②添加记录,将域名指向服务器的ip地址③接着登录服务器,打开phpstudy的站点域名配置,网站域名和第二域名都配置解析记录里的主机记录,网站目录可以选择phpStudy下的www文件夹做根目录,也可以选择里面具体的文件夹做根目录,看个人需求④保存设置重启phpS...
2019-05-05 16:34:26
9008
原创 Apache服务器配置SSL证书踩坑
按照阿里云帮助文档给Apache服务器配置SSL证书时,遇到了一些问题,特意记录下。配置过程:①在阿里云给域名签发了SSL证书后,需要将其下载到本地。解压证书文件夹可以得到三个文件,将其拷贝到Apache根目录的conf文件夹里的ssl文件夹中。②打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到以下内容并去掉“#”#LoadModul...
2019-04-25 18:18:53
4681
2
原创 微信小程序一直提示变量未定义
data中设置了数据,但微信小程序控制台一直提示变量未定义,js代码如下 data: { foodList: wx.getStorageSync('foodList'), chooseFiles: [] }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var foodInd...
2019-04-23 16:31:00
14818
3
原创 算法排序(五)——归并排序法
目的:使用归并排序法对随机数组进行排序归并排序思路:假设数组有n个数,先将其分为两半,再对这两半继续对半分隔...重复操作直到分隔后的小部分只有一个数。接着对这两个数进行归并操作,归并后得到一个有序的两个数组成的小数组,再将其与另一个有序的两个数组成的小数组进行归并,重复操作,直到所有数组有序。之所以要先不断分隔,是为了左右两侧内部要保证有序,才可以进行归并操作。话不啰嗦,还是直接上代...
2019-03-20 21:29:54
935
原创 算法排序(四)——冒泡排序法
目标:使用冒泡排序法对随机数组进行排序。冒泡排序思想:假设数组一共有n个元素,那么一共要进行n-1次循环,在每次循环里,定义变量j从下标0开始,与后面一个数进行比较,如果array[j]>array[j+1]则交换两个数,直到j==array.length-i-1,完成将最大数放到最后的任务,接着下轮循环;每次循环会将当前比较范围中最大的数值推送到最后并将比较范围减1,直到比较范围为1时...
2019-03-19 11:51:11
589
4
原创 算法排序(三)——插入排序法
目标:使用插入排序法对一个随机数组进行从小到大的排序插入排序法思想:类似于扑克牌的排序整理,从第2个数开始,和前面的一个数比较,如果比它小,交换两个数,然后再与前面一个数比较,类推。。。直到当前数比它之前的数更大时或者当前数已经是第一个数时,停止循环,接着对下一个数进行插入操作,重复上述过程,直到对最后一个数进行完了插入操作,排序完成。代码实现: //插入排序法 public...
2019-03-19 11:31:31
814
原创 算法排序(二)——选择排序法
目标:实现选择排序,将数组元素从小到大进行排序自定义方法selectionSort,传入参数为待排序数组array,返回排序完成后的数组。思路:使用i从0到array.length-1对数组进行遍历,遍历过程中,使用minIndex变量记录最小值下标,minIndex初始值为i;接着使用变量j对数组下标为i+1~array.length-1的元素进行遍历,遍历过程中对array[j]和ar...
2019-03-18 12:09:10
407
原创 算法排序(一)——生成随机数组
由于博主最近想去面试了,需要重新复习下算法与数据结构,这里简单的整理下。目标:生成并返回一个含有n个整型元素,数值范围为left~right的数组;在这里自定义个SortUtil作为一个排序工具类实现过程:传入参数n,Left,Right。先声明一个数组大小为n的整型数组,循环将数组元素赋值为(int) (Math.random()*(Right-Left)+Left),其中Math....
2019-03-18 11:43:55
1014
原创 豆瓣API接口调用失败解决方案
浏览器访问https://api.douban.com有JSON数据显示,到了开发工具提示网址被弃用。将API基地址改为https://douban.uieee.com问题解决。
2019-03-12 09:10:28
6916
13
原创 微信小程序配置可信域名列表
①登录微信公众平台:https://mp.weixin.qq.com/②开发——>开发设置——>修改③扫码身份验证,配置可信域名(最多配置5个)④回到微信开发工具,点击“详情”——>“域名信息”,保存刷新即可...
2019-03-12 09:06:05
7391
原创 Java游戏开发——RGP走迷宫
游戏介绍RGP走迷宫游戏就是玩家通过方向键控制主角RGP人物从迷宫左上角走到右下角绿色出口处。游戏可以提高玩家观察力,训练思维力,开发想象力。本篇博文一共开发了两种难度的走迷宫游戏,简单难度是全图点亮状态的;而正常难度只显示主角身边一个圆的区域(其余区域黑暗,如果实在走不出可以参考辅助地图)运行效果如下:使用素材文件夹素材及完整工程源码链接:https://pan....
2019-01-26 22:12:46
3372
4
原创 自动生成迷宫
知识点①基于rank优化的并查集,用来检测两点是否相连,提高根节点查找效率②最小生成树,通过随机权值,生成一个随机迷宫设计思想可以初始化一个网格地图,然后逐渐打通其中的墙,这里以5*5网格为例,“ ”表示结点,“#”表示墙;打通前:可以看出,这里一共有25个结点,如果要形成迷宫,需要打破24堵结点之间的墙;创建边Edge类,存储边的起点和终点以及权值,每个结点只和自...
2019-01-22 01:57:31
5754
原创 GUI编程基础学习(七)——动作事件、鼠标事件、键盘事件
动作事件处理动作事件由ActionEvent类定义,最常用的是点击按钮后产生动作事件,可以通过实现ActionListener接口处理相应的动作事件;ActionListener接口只有一个抽象方法,将在动作发生后触发,ActionListener接口的具体定义如下:public interface ActionListener extends EventListener{ ...
2019-01-14 20:55:08
1718
1
原创 Java游戏开发——flappy bird
游戏介绍在《FlappyBird》这款游戏中,玩家鼠标点击屏幕,小鸟就会往上飞,不断的点击就会不断的往高处飞。不点击的话则会快速下降。所以玩家要控制小鸟一直向前飞行,然后注意躲避途中高低不平的管子。 1、在游戏开始后,鼠标点击屏幕,要记住是有间歇的点击屏幕,不要让小鸟掉下来。2、尽量保持平和的心情,点的时候不要下手太重,尽量注视着小鸟。3、游戏的得分是,小鸟安全穿过一个柱子且不撞上...
2019-01-11 21:10:01
5368
8
原创 GUI编程基础学习(六)——进度条、定时器、对话框
进度条JProgressBar使用JProgressBar创建进度条组件,该组件可以使用一种颜色动态地填充自己,以便显示某任务完成的百分比。JProgressBar常用构造方法:①JProgressBar():创建一个显示边框但不带进度字符串的水平进度条②JProgressBar(BoundedRangeModel model):创建使用指定的保存进度条数据模型的水平进度条③J...
2019-01-10 21:14:36
919
原创 GUI编程基础学习(五)——图片的获取、显示及裁剪
Java提供了java.awt.Image包来管理与图像文件相关的信息,因此执行与图像文件有关的操作需要导入这个包。除了Image类之外,java.awt包还提供了其他的基本图像支持,例如Graphics类的drawImage()方法、Toolkit对象的getImage()方法及MediaTracker类。Toolkit类提供了两个getImage()方法来加载图片:①Image g...
2019-01-09 20:50:14
1708
1
原创 GUI编程基础学习(四)——常见几何图形的绘制
绘制直线在Java中可以使用以下方法绘画一条直线drawLine(int x1,int y1,int x2,int y2);其中参数(x1,y1)是直线的起点,(x2,y2)是直线的终点绘制矩形Java提供了绘画空心矩形(只绘制矩形的轮廓)和填充矩形的方法,分别针对普通直线矩形、圆角矩形和三维矩形有不同的绘制方法。①直角矩形绘制直角矩形的轮廓:drawRect(...
2019-01-08 20:47:57
2772
原创 GUI编程基础学习(三)——单选按钮、复选框、组合框
单选按钮JRadioButtonJRadioButton组件用于实现一个单选按钮。JRadioButton类可以单独使用,也可以与ButtonGroup类联合使用,当其单独使用时,该单选按钮可以被选定和被取消选定;当与ButtonGroup类联合使用时,需要使用add()方法将JRadioButton添加到ButtonGroup中,组成一个单选按钮按钮组,此时用户只能选定按钮组中的一个单选按钮...
2019-01-07 21:29:50
3186
原创 GUI编程基础学习(二)——标签、文本框、按钮
标签JLabelJLabel是一种常用的组件,一般用于显示固定的文字信息,同时它也可以显示图片:JLabel常用构造方法:①JLabel() 创建无图像并且其标题为空字符串的 JLabel。②JLabel(Icon image) 创建具有指定图像的 JLabel 实例。③JLabel(Icon image, int horizontalAlignment) 创建具有指定图像和水...
2019-01-06 20:42:36
3952
原创 GUI编程基础学习(一)——框架JFrame、面板JPanel
框架JFrame框架是Swing GUI应用程序的主窗口,窗口有边界、标题、关闭按钮等。JFrame类是java.awt包中Frame类的子类,它创建的对象时窗体,窗体是重量级容器;补充:javax.swing包下的大部分组件是由Java代码实现的轻量级组件,因此它具备平台移植性,而java.awt包下的大部分组件则是调用了操作系统的函数画出来的组件;轻量级组件必须布局在重量级组件之上...
2019-01-05 21:04:08
1739
6
原创 Java游戏开发——中国象棋联机版
游戏介绍:中国象棋是起源于中国的一种棋戏,属于二人对抗性游戏的一种,在中国有着悠久的历史。由于规则简单,趣味性强,成为流行极为广泛的棋类游戏。 中国象棋使用方形格状棋盘及红黑二色圆形棋子进行对弈,棋盘上有十条横线、九条竖线共分成90个交叉点;中国象棋的棋子共有32个,每种颜色16个棋子,分为7个兵种,摆放和活动在交叉点上。双方交替行棋,先把对方的将(帅)“将死”的一方获胜。本篇博文开发了一...
2019-01-04 18:44:33
20446
22
原创 字符基础——简易版飞机大战
使用C/C++开发一个字符版的飞机大战,玩家可以上下左右移动,空格键开火,子弹为激光,敌机可以自我移动,玩家发射的激光如果击中敌机,绘画简易版爆炸效果。开发环境:Dev-C++ 5介绍:使用表示主角飞机,使用表示敌机,使用表示敌机被击中的形态,使用表示正在开火的主角飞机,"|"表示激光。当敌机被击中后,分数score++并且在一个随机的位置生成新的敌机,这里限制了敌机只能在第0行到第4行以...
2019-01-02 21:08:07
974
2
原创 字符基础——四处弹跳的小球
使用C/C++编程语言实现一个小球来回弹跳的效果。开发环境:Dev-C++ 5介绍:使用字符'0'表示弹跳的小球,小球具有水平速度和垂直速度,小球触碰到上下左右边界时改变速度方向。制作过程:使用x表示小球处于第几行,y表示小球处于第几列,x_v表示小球在垂直方向的速度(值大于0时,小球向下移动,否则向上移动),y_v表示小球在水平方向的速度(值大于0时,小球向右移动,否则向左移动)...
2019-01-02 20:09:09
793
原创 UDP网络编程简单实现
由于最近编写的游戏涉及到了网络编程这块,所以特意记录下。UDP简介UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据报。在OSI模型中,UDP位于第四层——传输层,处于IP协议额上一层。UDP有不提供数据报分组、组装以及不能对数据报排序的缺点。当报文发送之后,是无法得知其是否安全完整到达的。由于UDP不属于连接性协议的特性,因此具有资源消耗小、处理速度快的优点,所以通...
2019-01-01 00:18:42
3680
5
原创 JPanel最小化后JButton按钮大小异常解决办法
这几天做了个华容道游戏,中途碰到了一个bug,就是游戏进入下一关后窗口最小化,然后还原游戏窗口,游戏面板的最后一个JButton变成全屏了,如下图所示:翻阅了很多帖子,大致问题就是JPanel默认面板布局的问题,在这里我在游戏面板的paint()方法中加入setLayout(null),问题解决。 public void paint(Graphics g){ setLayou...
2018-12-23 20:10:02
496
原创 Java游戏开发——华容道
游戏介绍:“华容道”是一款比较古老的游戏,其源于三国时期著名的历史故事。华容道作为一个经典游戏,各部分的设计都恰到好处,非常巧妙,因此成为世界游戏界的三大不可思议。“华容道”游戏初始时曹操被围在华容道最里层,玩家需要移动其他角色,使曹操顺利到达出口。玩家先选择需要移动的角色,然后拖动鼠标,被选中的角色就会向鼠标拖动的方向移动。最后,当成功地将曹操移动到出口时,游戏结束。本次开发的“华容...
2018-12-23 20:02:26
6642
8
原创 Java游戏开发——对对碰
游戏介绍:对对碰游戏在n*n的游戏池中进行,每个格子中有一个图案。鼠标连续选中两个横排或竖排相邻的图案,它们的位置会互换,互换后如果横排或者竖排有3个以上相同的图像,则可以消去该图像,并得分。游戏的基本规则如下:①交换玩家选择两个横排或竖排相邻的图案进行位置互换,如果互换成功则能消去图案,否则取消位置交换。②消去玩家选择两个横排或竖排相邻的图案进行位置互换,互换后如果横排或...
2018-12-17 22:55:13
14963
20
Java开发的进阶版迷宫游戏,只显示主角周围一个圆区域,出口在最右下角
2019-01-26
对对碰完整源码及素材(Java实现)
2019-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人