- 博客(21)
- 收藏
- 关注
原创 QT操作Mysql数据库
Qt提供了QtSql模块来进行独立于平台的数据库操作,这里的“平台”既包括操作系统平台,也包括各个数据库平台。Qt使用一个QDatabase表示一个数据库连接,在底层,Qt使用不同的驱动程序来与不同的数据库API进行交互。通常,Qt只默认搭载了QSqlLite驱动程序,如果需要使用其他数据库,需要下载相应的数据库,将其驱动程序加载到Qt中。
2023-07-08 00:36:40 6049 1
原创 QT通过TCP协议传输文件
常用的网络协议分为TCP和UDP两种,两种方式各有优缺点,其中TCP的主要特点是可靠,但是速度较慢(不丢包);而UDP则是不可靠传输,但速度快(可能丢包)。今天主要介绍的就是通过QT框架和TCP协议实现简单的文件传输。
2023-06-17 13:36:35 2781
原创 Android多窗口事件
Android多窗口类型现在主要有三种:分屏模式,自由模式(弹窗模式),画中画模式。多窗口模式的实现依赖于FrameWork层的代码,app层面开启多窗口只需要在AndroidManifest.xml中声明属性即可android:resizeableActivity="true"声明该属性后,该应用在支持多窗口的机型上即可在多窗口模式下打开。如果需要禁用多窗口,只需要在属性里声明android:resizeableActivity="false"即可,该属性只有在sdk24及以上才能
2022-03-19 11:54:42 3111
原创 Talkback点击事件
和正常状态下的点击事件一样,Talkback下的点击事件也有相应的处理流程。正常状态下的点击事件正常状态下的点击事件主要有dispatchTouchEvent(),onInterceptTouchEvent(),onTouchEvent(),Talkback下的点击事件主要有dispatchHoverEvent(),onInterceptHoverEvent(),onHoverEvent()其中比较特殊的是onInterceptTouchEvent()和onInterceptHoverE
2022-03-19 11:51:58 3037
原创 Handler基础
应用程序启动时,会开启一个主线程(即UI线程),用来管理UI,监听用户点击,相应用户并发事件分发。所以主线程不进行耗时操作,否则出现ANR错误。这些耗时操作放到子线程中,由于Android子线程不是安全的,所以只能在主线程中更新UI。Handler就是用来子线程和创建Handler的线程进行通信的。Handler的作用1、按照时间计划,在未来某时刻,对处理一个消息或执行某个runnable实例。2、把一个对另外线程对象的操作请求放入消息队列中,从而避免线程冲突。Handler的使用
2022-03-19 11:49:02 2844
原创 AsyncTask基础
Android现在的异步任务的方式有两种:AsyncTask和Handler。Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但是缺点也比较明显,例如代码比较臃肿,在多个任务同事执行时,不易对线程进行精确地控制。为了简化操作,Android提供了AsyncTask类,使得创建异步任务变得更加简单。AsyncTask的定义三种泛型分别代表“启动任务输入的执行参数”,“后台任务执行的进
2022-03-19 11:44:06 1386
原创 Android动画浅谈(二)
之前只是简单的讲了讲Android动画当方面一些基础、定义之类的,今天讲一讲一些比较具体的应用场景。主要是动画的监听,对动画的监听和其他事件的监听一样,都是使用添加Listener的形式,利用listener进行监听,一般主要使用的监听有两个,Animator.AnimatorListener和AnimatorListenerAdapter,两者的差别在于使用的时候AnimatorListenerAdapter可以直接实现一种监听事件就使用(onAnimationStart (动画开始),onAnimati
2021-12-19 16:39:44 1754
原创 Android动画浅谈(一)
Android动画的分类Android中的动画主要有三类:逐帧动画、补间动画和属性动画,。逐帧动画的原理是利用人类的“视觉残留”,通过改变播放图片的形式来达到动画的效果,在实际开发中使用较少,故本文中不予以展开。主要介绍补间动画和属性动画。补间动画:主要有旋转、位移、缩放、透明度和组合5种场景。属性动画:可以说是以上动画的补充,可以作用于对象的任意属性。补间动画和属性动画的区别使用补间动画已经可以实现很多的动画效果了,但是仍然有一些局限,所以推出了属性动画作为动画的补充,但它们两者还是存在一些
2021-12-13 20:50:27 1712
原创 Android横竖屏切换的生命周期
之前被前辈问到过很多次这个问题,也在网上查找多答案,今天好奇试了试,在这里分享一下。忘了之前看的是什么时候发的文章,里面讲过横竖屏切换的生命周期问题,大致内容是未配置android:configChanges的情况下,横-》竖会走一次生命周期,而竖-》横会走两次生命周期,但是今天实际实验了一把,发现和之前的文章不太相符。首先是竖-》横,其生命周期如下:然后是横-》竖,其生命周期如下:...
2021-10-18 20:26:54 864
原创 Android部分属性
layout_gravity:设置该元素位于父元素的位置(例如,button使用layout_gravity="center",则会出位于button所在父布局的中间)gravity:控件中子元素的位置(例如,button使用gravity="center",button中的文字则会居中)marginStart:控件距离View开头位置的距离。与marginLeft的区别:marginLeft指的是距离View左边的距离,但在部分语言中,比如阿拉伯语还是从右往左,此时使用marginLeft则会
2021-10-14 19:12:47 219
原创 Camera2录像流程浅析
昨天分享了Camera2预览拍照的流程,今天简单分享一下Camera2录像的实现过程。总的来说Camera2实现录像和实现预览拍照的方法差不多(只有细微差别,需要使用MediaRecorder记录数据,使用的CameraDeciue1、首先和预览拍照一样,实现和相机有关的功能必须先获取相机服务即获取CameraManager对象。CameraManager mCameraManager = (CameraManager)getSystemService(Context.CAMERA_SERVICE
2021-10-08 09:52:29 2265
原创 Camera2预览拍照流程
Camera2是现在Andoird相机开发中经常使用的框架,最近一直在学习Camera2的使用,今天简单分享一下我学到的Camera2的预览拍照的流程。1、获取相机服务,在Camera2中相机服务的管理使用CameraManager对象来进行,所以第一步是获取相机服务。CameraManager mCameraManager = (CameraManager)getSystemService(Context.CAMERA_SERVICE);2、获取相应的CameraDevice,想要具体的使用
2021-09-30 21:40:54 1411 8
原创 Android权限申请
Android权限申请分为两种情况:一种是普通权限;一种是危险权限。对于普通权限的申请和正常的权限申请一样,只需要在AndroidManifest.xml中使用<uses-permission/>标签申请即可,而对于特殊的危险权限,不仅需要在AndroidManifest.xml中申请,还需要在使用的过程中动态申请权限(也叫运行时权限,Android 6.0之后出现)。那么有哪些是危险权限呢?目前的危险权限主要有9组24个。对于以上的权限,需要在使用的时候动态申请,同时还需要注意的是
2021-09-06 14:04:21 3688
原创 浅谈Android事件分发
Android事件分发不论是实际应用中还是面试中都是经常用到的知识,所以今天简单的介绍一下。首先,事件分发的"事件“是指Android中的点击(Touch)事件,事件分发渐大的讲就是讲点击事件传递到相应的View并处理的过程。Android中对点击事件进行处理的对象及其顺序为:Activity->ViewGroup->view及其子类。首先是Activity对事件进行分发:从用户手指接触到手机屏幕开始,事件就已经开始产生,Activity接收到用户点击的事件之后开始对事件进行分发(Acti
2021-09-02 22:19:05 122
原创 RecyclerView生成Item
最近在使用RecyclerViewde制作一个聊天界面的时候,页面总是显示不出来Item,仔细检查代码之后终于发现了问题,简单的记录一下:我想要建立的是纵向item的RecyclerView,刚开始使用的确实横向布局的LinearLayout,导致每次...
2021-08-23 19:59:40 219
原创 Java线程
学习多线程之前首先了解一下线程和进程。线程是计算机执行任务的最小单位,是线程中一个单一顺序的控制流;进程是计算机可占有资源的最小单位,一个进程中可以有多条线程。线程是为了提高计算机的工作效率而设计的(主要是为了提高cpu的利用率,进程中比较费时的是等待资源,真正利用cpu的时间不多,将一个主任务(进程)分成多个任务模块(线程)可以减少因为某一资源未获取而浪费的cpu利用,更好的提高cpu的利用率)。Java为多线程提供内置的支持。...
2021-08-11 20:30:32 107
原创 Java抽象类
抽象类:不能够具体、准确的描述某一对象的类就是抽象类。抽象类的存在是为了在之后实现该类的子类时具有更多的可能性、同时更快的设计出具有某些相同信息的子类。抽象类使用abstract修饰类。需要注意的是,因为抽象类不能具体准确的描述某一对象,所以抽象类不能实例化,只能被其他类继承。抽象类中还可能存在抽象方法,抽象方法是指抽象类中使用abstract修饰的方法体为空的方法,这些方法需要在抽象类的子类中被具体化(即填写方法体),或者抽象类的子类也声明为抽象类。tips:1、有抽象方法的类一定是抽
2021-08-07 10:05:32 83
原创 Java多态
封装、继承和多态是面向对象的三大基本特征!多态可以说是在前面两个基本特征的基础上建立起来的另一个特征。多态首先需要具备三个条件:1、继承;2、重写;3、父类对引用指向子类对象;多态是同一方法对于不同的类具有不同的变现形式(方法体不同),即存在重写,重写有需要继承为基础(继承)。最后,最重要的就是使用父类引用指向子类对象。虚函数:虚函数是为了多态而存在的。Java中没有虚函数的概念,Java中的普通函数就相当于虚函数,如果想要Java中的某一函数不是虚函数,可以通过使用final修
2021-08-06 19:32:10 85
原创 Java重写与重载
最近有开始重新捡起《Java》的基础,简单学习了Java中的重写与重载!重写:重写是子类对父类中已经存在的方法(已经在父类中有过定义)进行重新具体化(方法体)的过程。重写的方法有一些具体的要求(“两同两小一大原则”):1、重写的方法名和参数列表要与父类中的方法名和参数列表相同(“两同”);2、子类方法的返回类型小于等于父类方法的返回类型; 子类方法抛出的异常小于父类方法抛出的异常。(两小)3、子类方法的访问权限大于父类方法的访问权限。(一大)重写还有一些需要注意的地方:...
2021-08-05 21:16:38 112
原创 2020东软面试题小计(校招Java篇)
今年东软校招的Java面试题不是很难,这里简单的记录一下,希望能够给有需要的人有些帮助1、和其他公司一样,简单介绍自己参与过的项目及职责2、Java中所有类的基础类是什么?3、Java中堆和栈的区别4、重载和重写的区别5、protecte和private的访问权限6、final关键字的作用(类、方法)7、抽象类和普通类的区别8、对多态的理解(父类引用指向子类对象时的调用)9、普通接口和抽象接口的区别10、是否学习新技术可能还有些许遗漏,仅供大家参考。...
2020-11-21 22:55:47 1974 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人