- Andrioid T 实现充电动画(2)
胖大师
gitee
AndrioidT实现充电动画(2)以MTK平台为例,实现充电动画效果图资源包修改文件清单system/vendor/mediatek/proprietary/packages/apps/SystemUI/res/layout/prize_charge_layout.xmlsystem/vendor/mediatek/proprietary/packages/apps/SystemUI/src/c
- uniapp Android, IOS 权限判断
拢作是笑诙
一般来说权限可通过纯js的Native.js来是实现,不需要打包自定义基座。Native.js的详细介绍见Native.js入门uniapp插件地址:(https://ext.dcloud.net.cn/plugin?id=594)andrioid权限是直接打开设置列表就能出现,而IOS的权限则是需要你有调用过的才会出现在ios想要使用某个权限可通过h5+模拟调用来唤醒权限如:ios中获取摄像头的
- Android Camera2使用SurfaceView进行简单预览和绘制
wulileaf
Androidandroid
最近项目上需要在相机上做些开发,之前对这块不是很了解,就学习下,这里使用的Camera2进行,开发测试调试的手机是vivoY9s(Andrioid9.0)下面是主要流程步骤检测是否有相机设备检测相关相机权限开启线程打开相机(>=21和<21)预览过程简单绘制其中预览过程最为复杂需要下功夫去了解下的。//检测手机是否有摄像头presenceCamera=checkCameraHardware(Cam
- Android10 安装 Magisk + EdXposed 框架
xuing
1.确保Bootloader是解锁状态请根据自己的手机,结合网上相关资料。自行解锁。本文使用的手机是Pixel。其他手机大同小异或更为复杂。对于华为或三星手机可以参考Magisk官网的安装说明。Recovery可以是原版,不需要刷。因为TWRP不支持Andrioid10。具体原因可看备注。2.下载工具安装驱动首先要下载ADB、Fastboot等工具。下载地址:https://developer.a
- Qt qml webview加载本地html
nikon800
Qtandroidios
Qtqmlwebview加载本地html用qml做移动项目也有段时间了,今天分享一下qml的webview加载本地html吧webview加载本地html,在官方并没有明确说明在andrioid下webview是这样的WebView{id:webanchors.centerIn:parentanchors.fill:parenturl:“file:///android_asset/data/bai
- andrioid——checkbox勾选按钮自定义样式
叮咚在深圳
layout自定义checkboxandroidlayout
1、第一步:在res/drawable目录下新建自定义checkbox勾选按钮图片的xml文件tab_protocol_checkbox。当checkbox被选中时,显示checkbox_pressed图片(android:state_checked=”true”指定选中状态下的图片)。当checkbox没有被选中时,显示checkbox_normal图片。如果需要在选中状态下同时显示几张图片,可
- Andrioid进程保护
boy_nihao
Android笔记android开发闲时技巧android初级进阶aidl进程保活jobservice双进程守护
转载请注明出处:z_zhaojun的博客原文地址这篇博文主要是关于进程保活的应用,通过对网上各种进程保活方式的学习,自己理解后做汇总、优化、简单封装。进程保活,主要就为了加强你写的app在手机上的生存能力,降低被手机干掉的几率。当然,如果想要完全保证app不被杀死,那是不可能的(因为就是你再厉害,也厉害不过手机厂商),所以只能是尽量提高app的存活几率。下面将通过‘AIDL+JobService(
- 使用camera2构建相机应用
xingfeng_coder
Android基础
在Andrioid5.0之前如果要自己创建相机应用,那么需要使用android.hardware.Camera类,但是在Android5.0中引入了android.hardware.camera2包用于替代原有的类构建相机应用。本文主要讲述利用camera2包构建应用,如果想了解在Android5.0之前构建应用的话,可以到官网文档查看。一、android.hardware.camera2概述在官
- px30-andrioid8.1在启动时关闭logo,只显示andriod动画logo
android驱动_它不开机了
uboot阶段:在px30_android-8.1\uboot\drivers\video\pwm_backlight.c中对dm_gpio_set_value(&priv->enable,0);设值,0表示uboot阶段不开起gpio使能,效果为uboot阶段黑屏达到不显示logo的作用staticintpwm_backlight_enable(structudevice*dev){->->->
- andrioid 桌面
tea_year
Andorid开发道本自然
视频课:https://edu.csdn.net/course/play/7621学习内容手机桌面管理的技巧如何实现实时壁纸如何创建快捷方式如何创建桌面小控件如何创建文件夹能力目标了解手机桌面管理的技巧熟练掌握如何实现实时壁纸熟练掌握如何创建快捷方式熟练掌握如何创建桌面小控件熟练掌握如何创建文件夹本章简介Android被认为是新一代的移动操作系统,它与传统的移动操作系统存在很大的区别。传统的移动操
- 使用Openjdk7编译android源码出现"Could not initialize NSS"错误的解决办法
HappyBevis
最近在编译andrioid源码时遇到了如下奇葩的Error,一脸三角函数懵逼o_O!!Exceptioninthread"main"java.security.ProviderException:CouldnotinitializeNSSatsun.security.pkcs11.SunPKCS11.(SunPKCS11.java:223)atsun.security.pkcs11.SunPKCS
- Andrioid 入门第六讲04-网络请求第三方框架-xUtils(原生HTTP网络访问的缺点,xUtils简介,使用方法(网络请求访问,注解(布局文件+控件+点击事件)加载网络图片))
Rose J
Android入门(全)androidjava
Andrioid入门-网络请求第三方框架-xUtils(原生HTTP网络访问的缺点,xUtils简介,使用方法(网络请求访问,注解(布局文件+控件+点击事件)加载网络图片))本讲必备代码准备1.原生HTTP网络访问的缺点2.xUtils简介功能一网络请求功能二网络图片加载功能三注解功能四数据库3.xUtils框架使用方法1.xUtils框架网络请求访问(不带参数,不带缓存)2.xUitls框架注解
- Andrioid SystemProperties和Settings.System介绍,不同应用间传递信息
iteye_702
1使用SystemProperties.get这中方法在framework里面经常见到。特别属性如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。在c++中就是对应JAVA的两个函数就是property_set,property_get,其实JAVA是通过JNI调用
- Android-简单播放器——播放( 应用程序、内存卡以及网络音乐)
胖女人和猫
MediaPlayerAndroid
效果如图:MainActivity123456789101112packagezking.com.g150825_andrioid_playmusic;importandroid.content.Intent;importandroid.media.MediaPlayer;importandroid.net.Uri;importandroid.support.v7.app.AppCompatAct
- Fiddler HTTPS Andrioid 9.0证书解决方案
小伟哥哥ww
FiddlerHTTPSAndrioid9.0证书解决方案Android7.0后更新安全策略,软件可以自身选择是否相信用户导入的证书。所以当我们在手机导入Fiddler的证书后,有些软件依旧抓不到Https的包。解决方案有2个:APK里面加入相应的代码把Fiddler证书导入到手机系统里面而非个人里面一、首先将Fiddler证书导出来,保存为Fiddler.cer二、Linux安装Openssl安
- OkHttpClient日志不输出的解决办法
zoujun8666
在配置OkHttpClient日志时,正常情况下以下代码就可以正常的输出日志:okHttpClient.addInterceptor(newHttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY));可能在某些情况下(如手机设置,andrioid环境等)日志没有正常输出,但又不想自己写拦截器,此时只需要在创建HttpL
- Android 简洁易用andrioid6.0+权限请求组件
SwitchLife
开篇 android6.0+要求我们动态请求权限。网上针对于请求权限的封装很多,你是否用着还爽呢?不管如何,你且尝试下我给你写的组件——PermissionChecker。(不喜勿喷,谢谢哈!)屏幕截图立即体验扫描以下二维码下载体验App(从0.2.3版本开始,体验App内嵌版本更新检测功能):JSCKit库传送门:https://github.com/JustinRoom/JSCKit源码简析
- android 滚轮选择器
Anthonybuer
andrioid没有提供和苹果相似的时间选择器,如果想要实现我推荐https://github.com/gzu-liyujiang/AndroidPickerTimePickerpicker=newTimePicker(ThirdActivity.this,TimePicker.HOUR_24);picker.setUseWeight(false);picker.setCycleDisable(f
- android studio安装与下载
MayWendy
AndroidStudio
developer.android.com/sdk/index.htm下载androidstudio安装包tools.andrioid.com:下载android开发集合工具,adtIDE+SDK
- Nexus 5X成功运行Win10 Mobile Build 10568:流畅
佚名
谷歌引以为傲的Nexus系列在民间有着“亲儿子”的美称,除了第一时间获得推送Andrioid最新版本,其刷机体质也相当好。除了在各种AndroidROM之间游走,一位国内大神晒出了视频,他成功把Windows10Mobile移植到了Nexus5X上,而且运行情况良好。版本上显示Windows10MobileBuild10568,这是去年10月曝光的一个版本,比较老旧了,但说不定是因为该版本存在某些
- Andrioid项目之九图灵机器人
zhupengqq
jsonjson解析机器人图灵机器人智能对话
Andrioid项目之九图灵机器人要实现一个图灵机器人,首先需要在http://www.tuling123.com/中注册,然后创建一个应用,便可通过应用的APIkey使用图灵机器人。图灵机器人非常方便的一点是不需要添加额外的库类。只需要get请求访问http://www.tuling123.com/openapi/api就可以获得json数据,然后对json数据进行解析即可。下面就用Json解析
- Android 中文翻译:Build System Overview
zz20104534
android官方文档
Andrioid编译系统是你用于build,test,runapp的工具箱。编译系统的运行,可以通过AndroidStudio的菜单或者是独立的命令行。通过编译系统的特性你可以做以下的事情:(1) 自定义,配置,扩展编译进程。(2) 用同一个projectandmodules创建拥有不同特性的apk。(3) 通过来源设置重用代码和资源。Android编译系统的自由性,
- android的服务分类-andrioid学习之旅(94)
u010321471
serviceAndrioidBindServic
摘自韩国棒子的书,android框架摘要android服务类型分类,如下图:对于本地服务,有两种类型,一中是绑定进行数据交流,一种是不绑定的,生命周期如下图:
- 在Gradle中编译一次生成不同的版本,动态设定应用标题,应用图标,替换常量,andrioid gradle
centralperk
androidgradleStudio多程序分支
gradle里的配置sourceSets{
main{//重定义主程序各数据指向,因为是用eclipse导出的gradle
manifest.srcFile'AndroidManifest.xml'
java.srcDirs=['src']
resources.srcDirs=['src']
aidl.srcDirs=['src']
renderscript.srcDirs=['src']
res
- 在pcDuino上刷了AndDroid,Ubuntu,XBMC
ubuntu
一、Android、Ubuntu、XBMC播放高清视频得比较
1.Andrioid上播放1080P 无压力,硬件解码
2.Ubuntu上用Mplayer播放视频会很卡,可能是没有硬解的原因
3.Ubuntu上的XBMC 播放离线视频超给力,流畅清晰
4.Ubuntu上的XBMC 播放在线视频虽然不卡,但是花屏,估
- Andrioid---把view的画面转换为bitmap
bitmap
程序如何把自身进行一次截图?或者对某个view对象截图?由左至右,分别是 bt4 iv iv2 iv3iv是屏幕截图,上半部分是黑色,下面是bt4的图iv2填充的是未显示过的一个按钮,截取不到,呈黑色iv3是复制bt4,跟bt4一样上述代码包含了bitmap转换为drawable的方式
ImageView iv = (ImageView) findViewById(R.id.ImageView
- 在pcDuino上刷了AndDroid,Ubuntu,XBMC
ubuntu
一、Android、Ubuntu、XBMC播放高清视频得比较
1.Andrioid上播放1080P 无压力,硬件解码
2.Ubuntu上用Mplayer播放视频会很卡,可能是没有硬解的原因
3.Ubuntu上的XBMC 播放离线视频超给力,流畅清晰
4.Ubuntu上的XBMC 播放在线视频虽然不卡,但是花屏,估
- .Net 转战 Android 4.4 日常笔记(8)--常见事件响应及实现方式
android
原文:
.Net 转战 Android 4.4 日常笔记(8)--常见事件响应及实现方式
在Andrioid开发中,常见的事件如下
单击事件 OnClickListener
长按事件 OnLongClickListener
滑动事件 OnTouchListenner
键盘事件 OnKeyListenner
焦点事件 setOnFoucsChangeListener
- 利用GridView实现手机菜单功能
GridView
最近刚学习Andrioid 开发,昨日看到大牛级网友hellgv写的关于《Android入门第八篇之GridView(九宫图)》之后想到做一个模仿手机菜单界面的布局,于是有了今天下面的入门级作品,这个作品与大牛级网友hellgv写的作品最大的区别就是在菜单图片下面添加了不同文字,希望大家能多提建议,看怎么实现布局更加精美,共同勉励,共同进步,废话少说,先看效果图:
public cla
- Android的界面设计规范-5
android
模式
保证我们的应用的一致性并且新颖时尚、先进的。 Andrioid的新特性 新版本Jelly Bean - Android 4.1的新特性 通知
通知在Android4.1中得到了显着的增强:
l 用户可以立即从发出处收到通知
l 通知大小和布局上更灵活
l 通知可以按优先级和重要性排序
l 通知可以折叠和展开
基础的通知布局并没有改变,因此应用程序设计的早期版本
- java工厂模式
3213213333332132
java抽象工厂
工厂模式有
1、工厂方法
2、抽象工厂方法。
下面我的实现是抽象工厂方法,
给所有具体的产品类定一个通用的接口。
package 工厂模式;
/**
* 航天飞行接口
*
* @Description
* @author FuJianyong
* 2015-7-14下午02:42:05
*/
public interface SpaceF
- nginx频率限制+python测试
ronin47
nginx 频率 python
部分内容参考:http://www.abc3210.com/2013/web_04/82.shtml
首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出)。nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开。步骤如下:
- java线程和线程池的使用
dyy_gusi
ThreadPoolthreadRunnabletimer
java线程和线程池
一、创建多线程的方式
java多线程很常见,如何使用多线程,如何创建线程,java中有两种方式,第一种是让自己的类实现Runnable接口,第二种是让自己的类继承Thread类。其实Thread类自己也是实现了Runnable接口。具体使用实例如下:
1、通过实现Runnable接口方式 1 2
- Linux
171815164
linux
ubuntu kernel
http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.1.2-unstable/
安卓sdk代理
mirrors.neusoft.edu.cn 80
输入法和jdk
sudo apt-get install fcitx
su
- Tomcat JDBC Connection Pool
g21121
Connection
Tomcat7 抛弃了以往的DBCP 采用了新的Tomcat Jdbc Pool 作为数据库连接组件,事实上DBCP已经被Hibernate 所抛弃,因为他存在很多问题,诸如:更新缓慢,bug较多,编译问题,代码复杂等等。
Tomcat Jdbc P
- 敲代码的一点想法
永夜-极光
java随笔感想
入门学习java编程已经半年了,一路敲代码下来,现在也才1w+行代码量,也就菜鸟水准吧,但是在整个学习过程中,我一直在想,为什么很多培训老师,网上的文章都是要我们背一些代码?比如学习Arraylist的时候,教师就让我们先参考源代码写一遍,然
- jvm指令集
程序员是怎么炼成的
jvm 指令集
转自:http://blog.csdn.net/hudashi/article/details/7062675#comments
将值推送至栈顶时 const ldc push load指令
const系列
该系列命令主要负责把简单的数值类型送到栈顶。(从常量池或者局部变量push到栈顶时均使用)
0x02 &nbs
- Oracle字符集的查看查询和Oracle字符集的设置修改
aijuans
oracle
本文主要讨论以下几个部分:如何查看查询oracle字符集、 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题。
一、什么是Oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货
- png在Ie6下透明度处理方法
antonyup_2006
css浏览器FirebugIE
由于之前到深圳现场支撑上线,当时为了解决个控件下载,我机器上的IE8老报个错,不得以把ie8卸载掉,换个Ie6,问题解决了,今天出差回来,用ie6登入另一个正在开发的系统,遇到了Png图片的问题,当然升级到ie8(ie8自带的开发人员工具调试前端页面JS之类的还是比较方便的,和FireBug一样,呵呵),这个问题就解决了,但稍微做了下这个问题的处理。
我们知道PNG是图像文件存储格式,查询资
- 表查询常用命令高级查询方法(二)
百合不是茶
oracle分页查询分组查询联合查询
----------------------------------------------------分组查询 group by having --平均工资和最高工资 select avg(sal)平均工资,max(sal) from emp ; --每个部门的平均工资和最高工资
- uploadify3.1版本参数使用详解
bijian1013
JavaScriptuploadify3.1
使用:
绑定的界面元素<input id='gallery'type='file'/>$("#gallery").uploadify({设置参数,参数如下});
设置的属性:
id: jQuery(this).attr('id'),//绑定的input的ID
langFile: 'http://ww
- 精通Oracle10编程SQL(17)使用ORACLE系统包
bijian1013
oracle数据库plsql
/*
*使用ORACLE系统包
*/
--1.DBMS_OUTPUT
--ENABLE:用于激活过程PUT,PUT_LINE,NEW_LINE,GET_LINE和GET_LINES的调用
--语法:DBMS_OUTPUT.enable(buffer_size in integer default 20000);
--DISABLE:用于禁止对过程PUT,PUT_LINE,NEW
- 【JVM一】JVM垃圾回收日志
bit1129
垃圾回收
将JVM垃圾回收的日志记录下来,对于分析垃圾回收的运行状态,进而调整内存分配(年轻代,老年代,永久代的内存分配)等是很有意义的。JVM与垃圾回收日志相关的参数包括:
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-Xloggc
-XX:+PrintGC
通
- Toast使用
白糖_
toast
Android中的Toast是一种简易的消息提示框,toast提示框不能被用户点击,toast会根据用户设置的显示时间后自动消失。
创建Toast
两个方法创建Toast
makeText(Context context, int resId, int duration)
参数:context是toast显示在
- angular.identity
boyitech
AngularJSAngularJS API
angular.identiy 描述: 返回它第一参数的函数. 此函数多用于函数是编程. 使用方法: angular.identity(value); 参数详解: Param Type Details value
*
to be returned. 返回值: 传入的value 实例代码:
<!DOCTYPE HTML>
- java-两整数相除,求循环节
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class CircleDigitsInDivision {
/**
* 题目:求循环节,若整除则返回NULL,否则返回char*指向循环节。先写思路。函数原型:char*get_circle_digits(unsigned k,unsigned j)
- Java 日期 周 年
Chen.H
javaC++cC#
/**
* java日期操作(月末、周末等的日期操作)
*
* @author
*
*/
public class DateUtil {
/** */
/**
* 取得某天相加(减)後的那一天
*
* @param date
* @param num
*
- [高考与专业]欢迎广大高中毕业生加入自动控制与计算机应用专业
comsci
计算机
不知道现在的高校还设置这个宽口径专业没有,自动控制与计算机应用专业,我就是这个专业毕业的,这个专业的课程非常多,既要学习自动控制方面的课程,也要学习计算机专业的课程,对数学也要求比较高.....如果有这个专业,欢迎大家报考...毕业出来之后,就业的途径非常广.....
以后
- 分层查询(Hierarchical Queries)
daizj
oracle递归查询层次查询
Hierarchical Queries
If a table contains hierarchical data, then you can select rows in a hierarchical order using the hierarchical query clause:
hierarchical_query_clause::=
start with condi
- 数据迁移
daysinsun
数据迁移
最近公司在重构一个医疗系统,原来的系统是两个.Net系统,现需要重构到java中。数据库分别为SQL Server和Mysql,现需要将数据库统一为Hana数据库,发现了几个问题,但最后通过努力都解决了。
1、原本通过Hana的数据迁移工具把数据是可以迁移过去的,在MySQl里面的字段为TEXT类型的到Hana里面就存储不了了,最后不得不更改为clob。
2、在数据插入的时候有些字段特别长
- C语言学习二进制的表示示例
dcj3sjt126com
cbasic
进制的表示示例
# include <stdio.h>
int main(void)
{
int i = 0x32C;
printf("i = %d\n", i);
/*
printf的用法
%d表示以十进制输出
%x或%X表示以十六进制的输出
%o表示以八进制输出
*/
return 0;
}
- NsTimer 和 UITableViewCell 之间的控制
dcj3sjt126com
ios
情况是这样的:
一个UITableView, 每个Cell的内容是我自定义的 viewA viewA上面有很多的动画, 我需要添加NSTimer来做动画, 由于TableView的复用机制, 我添加的动画会不断开启, 没有停止, 动画会执行越来越多.
解决办法:
在配置cell的时候开始动画, 然后在cell结束显示的时候停止动画
查找cell结束显示的代理
- MySql中case when then 的使用
fanxiaolong
casewhenthenend
select "主键", "项目编号", "项目名称","项目创建时间", "项目状态","部门名称","创建人"
union
(select
pp.id as "主键",
pp.project_number as &
- Ehcache(01)——简介、基本操作
234390216
cacheehcache简介CacheManagercrud
Ehcache简介
目录
1 CacheManager
1.1 构造方法构建
1.2 静态方法构建
2 Cache
2.1&
- 最容易懂的javascript闭包学习入门
jackyrong
JavaScript
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
下面就是我的学习笔记,对于Javascript初学者应该是很有用的。
一、变量的作用域
要理解闭包,首先必须理解Javascript特殊
- 提升网站转化率的四步优化方案
php教程分享
数据结构PHP数据挖掘Google活动
网站开发完成后,我们在进行网站优化最关键的问题就是如何提高整体的转化率,这也是营销策略里最最重要的方面之一,并且也是网站综合运营实例的结果。文中分享了四大优化策略:调查、研究、优化、评估,这四大策略可以很好地帮助用户设计出高效的优化方案。
PHP开发的网站优化一个网站最关键和棘手的是,如何提高整体的转化率,这是任何营销策略里最重要的方面之一,而提升网站转化率是网站综合运营实力的结果。今天,我就分
- web开发里什么是HTML5的WebSocket?
naruto1990
Webhtml5浏览器socket
当前火起来的HTML5语言里面,很多学者们都还没有完全了解这语言的效果情况,我最喜欢的Web开发技术就是正迅速变得流行的 WebSocket API。WebSocket 提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器。让我们看一看6个HTML5教程介绍里 的 WebSocket API:它可用于客户端、服
- Socket初步编程——简单实现群聊
Everyday都不同
socket网络编程初步认识
初次接触到socket网络编程,也参考了网络上众前辈的文章。尝试自己也写了一下,记录下过程吧:
服务端:(接收客户端消息并把它们打印出来)
public class SocketServer {
private List<Socket> socketList = new ArrayList<Socket>();
public s
- 面试:Hashtable与HashMap的区别(结合线程)
toknowme
昨天去了某钱公司面试,面试过程中被问道
Hashtable与HashMap的区别?当时就是回答了一点,Hashtable是线程安全的,HashMap是线程不安全的,说白了,就是Hashtable是的同步的,HashMap不是同步的,需要额外的处理一下。
今天就动手写了一个例子,直接看代码吧
package com.learn.lesson001;
import java
- MVC设计模式的总结
xp9802
设计模式mvc框架IOC
随着Web应用的商业逻辑包含逐渐复杂的公式分析计算、决策支持等,使客户机越
来越不堪重负,因此将系统的商业分离出来。单独形成一部分,这样三层结构产生了。
其中‘层’是逻辑上的划分。
三层体系结构是将整个系统划分为如图2.1所示的结构[3]
(1)表现层(Presentation layer):包含表示代码、用户交互GUI、数据验证。
该层用于向客户端用户提供GUI交互,它允许用户