自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 Android进阶知识——Android性能优化

文章目录1.Android的性能优化方法1.1布局优化1.2绘制优化1.3内存泄漏优化通过本章的内容,我们可以掌握常见的性能优化方法,这将有助于提高Android程序的性能;另一方面,本章还将讲解Android程序的设计思想,这将有助于提高程序的可维护性和可扩展性。Android设备作为一种移动设备,不管是内存还是CPU的性能都受到了一定的限制,无法做到像PC设备那样具有超大的内存和高性能的CPU。鉴于这一点,这也意味着Android程序不可能无限制地使用内存和CPU资源,过多地使用内存会导致程序内存泄

2021-06-09 20:35:10 1224 5

原创 Android进阶知识——Android线程和线程池

文章目录1.主线程和子线程2.Android中的线程形态本章的主题是Android中的线程和线程池。线程在Android中是一个很重要的概念,从用途上来说,线程分为主线程和子线程,主线程主要处理和界面相关的事,而子线程则往往用于执行耗时操作。除了Thread本身以外,在Android中可以扮演线程角色的还有很多,比如AsyncTask和IntentService,同时HandlerThread也是一种特殊的线程。尽管AsyncTask、IntentService以及HandlerThread的表现形式都有

2021-06-06 17:10:01 856 9

原创 Android进阶知识——Android的消息机制

文章目录从开发的角度来说,Handler是Android消息机制的上层接口,这使得在开发过程中只需要和Handler交互即可。Handler的使用过程很简单,通过它可以轻松地将一个任务切换到Handler所在的线程中去执行。Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。MessageQueue的中文翻译是消息队列,它的内部存储了一组消息,以队列的形式对外提供插入和删除的工作。虽然叫消息队列,但是它的内部存储结构并不是

2021-06-01 19:32:26 868 2

原创 Android进阶知识——Android动画深入分析

文章目录1.View动画1.1View动画的种类Android动画可以分为三种:View动画、帧动画和属性动画,其实帧动画也属于View动画的一种,只不过它的平移、旋转等常见的View动画在表现形式上略有不同而已。View动画通过对场景里的对象不断做图像变换(平移、缩放、旋转、透明度)从而产生动画效果,它是一种渐进式动画,并且View动画支持自定义。帧动画通过顺序播放一系列图像从而产生动画效果,可以简单理解为图片切换动画,而如果图片过多过大就会导致OOM。属性动画通过动态地改变对象的属性从而达到动画效果。

2021-05-26 18:16:04 849 9

原创 Android进阶知识——View的工作原理

文章目录1.初识ViewRoot和DecorView本章我们主要介绍两个方面的内容,首先介绍View的工作原理,接着介绍自定义View的实现方式。有的时候我们可能想要在界面上实现一些比较华丽的效果,而往往系统提供的现有控件并不能满足我们的需求,这个时候我们就需要使用自定义View了。为了更好地自定义View,还需要掌握View的底层工作原理,比如View的测量流程、布局流程以及绘制流程。除了View的三大流程以外,View常见的回调方法也是需要熟练掌握的,比如构造方法、onAttach、onVisibi

2021-05-16 18:02:33 343 7

原创 Android进阶知识——View的事件体系

文章目录1.View的基础知识1.1什么是View1.2View的位置参数1.3MotionEvent和TouchSlop1.4VelocityTracker、GestureDetector和Scroller本章我们将介绍Android中十分重要的一个概念:View,它的应用十分广泛。比如说自定义控件和解决滑动冲突等,因此学好Veiw的事件体系对于我们开发者而言是十分必要的。1.View的基础知识本节我们将主要介绍的内容有:View的位置参数、MotionEvent和TouchSlop对象、Veloc

2021-04-26 20:50:44 401 1

原创 Android进阶知识——Activity的生命周期和启动模式

文章目录1.Activity的生命周期全面分析1.1典型情况下的生命周期分析1.2异常情况下的生命周期分析Activity作为四大组件之首,是使用最为频繁的一种组件。而本节我们就来讲解一些Activity在使用过程中的一些不容易搞清楚的概念,主要包括生命周期和启动模式以及IntentFilter的匹配规则分析。1.Activity的生命周期全面分析首先Activity的生命周期分为典型情况下的生命周期以及异常情况下的生命周期两种。典型情况下的生命周期:指在有用户参与的情况下,Activity所经

2021-04-22 18:56:14 256

原创 Kotlin实战——Kotlin基础

文章目录1.基本要素:函数和变量1.1 函数1.2变量1.3更简单的字符串格式化:字符串模板2.类和属性2.1属性2.2自定义访问器3.表示和处理选择:枚举和“when”3.1声明枚举类3.2使用“when”处理枚举类3.3在“when”结构中使用任意对象1.基本要素:函数和变量1.1 函数首先我们来定义一个无返回值的函数fun main(args:Array<String>){ println("Hello,world!")}接下来我们再来看看带返回值的函数是如何定义的

2021-03-14 22:09:18 603 2

原创 Android基础知识——实现耗时进度圈效果

在开发过程中我们可能会去实现一些比较耗时的网络请求功能,而为了填补网络请求的时间,一般我们都是要加上一个加载进度圈的效果用以过渡。这篇文章我们就来介绍使用ProgressBar+AlertDialog来实现耗时进度圈的效果。1.编写耗时对话框的背景shape文件progress_bg.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/an

2021-01-24 15:46:01 309

原创 Android开发知识——开发中遇到的问题(2)

文章目录前言1.ScrollView与ImageView共用导致出现大段空白2.透明化系统栏时遇到的问题3.百度地图定位不准确的问题4.改变Toolbar中title文字的位置前言以下内容为笔者在开发垃圾识别App时所遇到的实际问题及其解决方法,在此记录,与读者分享也供自己日后回顾。1.ScrollView与ImageView共用导致出现大段空白笔者在开发时,希望在一个界面下放入数目固定的几张图片供用户获取信息,并且由于图片较长所以采用ScrollView控件实现滑动。不过在实际开发时,却发现了滑动

2021-01-23 15:29:28 312 1

原创 Andorid基础知识——Retrofit的基本使用

文章目录1.Retrofit是什么2.Retrofit的使用2.1添加依赖2.2创建接收服务器返回数据的类2.3创建用于描述网络请求的接口2.4创建Retrofit实例2.5创建网络请求接口实例2.6发送网络请求2.7处理返回数据1.Retrofit是什么Retrofit主要是对Android网络请求的框架进行封装,底层基于OkHttp。换句话说,网络请求的本质还是OkHttp完成,而Retrofit仅负责网络请求接口的封装。主要是使用Retrofit接口封装请求参数,header头部,Url信息等

2020-11-01 18:52:28 369

原创 Android基础知识——基于位置的服务

文章目录1.基于位置的服务简介2.申请API Key3.使用百度定位。3.1准备LBS SDK1.基于位置的服务简介基于位置的服务所围绕的核心就是要先确定出用户所在的位置。通常有两种技术方式可以实现:一种是通过GPS定位,一种是通过网络定位。GPS定位的工作原理是基于手机内置的GPS硬件直接和卫星交互来获取当前的经纬度信息,这种方式精确度非常高,但缺点是只能在室外使用,室内基本无法接收到卫星信号。网络定位的工作原理是根据手机当前网络附近的三个基站进行测速,以此计算出手机和每个基站之间的距离,再通过三角

2020-10-23 22:23:27 1062

原创 Android开发知识——开发中遇到的问题(1)

文章目录1.动态控制布局的位置2.单选按钮的使用3.仅在需要时才显示布局3.1控制布局的可见属性3.2ViewStub3.3以上两种方法的利弊4.判断ImageView展示的是哪一张图片5.单选框的使用6.RecyclerView实现侧滑删除7.在活动中处理RecyclerView的点击事件1.动态控制布局的位置在开发时,我们可能需要在同一活动中的不同界面下来改变布局的位置使得布局处于一个比较合理的位置。例如:我们在活动的主界面希望用户能有沉浸式的体验,所以我们将我们的布局延伸到了系统栏中,可是当我们

2020-10-18 19:52:43 2051 8

原创 数据结构(1)——链表的基本操作

文章目录1.链表的基本概念2.创建链表2.1尾插法2.2头插法3.链表的遍历及其增删改查3.1链表的遍历3.2增加新节点3.3删除节点3.3.1按位删除节点3.3.2按数据删除节点3.4修改数据3.5查找数据4.链表的升序合并,冒泡排序,逆置4.1升序合并4.2冒泡排序4.3逆置1.链表的基本概念概念:链表是一种线性的数据结构,通过指针将零散的内存块连接起来,链表的没个内存块成为节点。链表的实现方法:链表以结构体为节点(包含数据域和指针域),利用数据域来存储数据,然后将每个节点的指针域都指向下一个节

2020-09-22 23:16:24 1796

原创 Android基础知识——你还应该掌握的高级技巧

文章目录1.全局获得Context的技巧2.使用Intent传递对象2.1Serializable方式2.2Parcelable方式3.定制自己的日志工具1.全局获得Context的技巧在我们学习Android基础知识的时候,你会发现在很多地方我们都会使用到Context,弹出Toast的时候需要,启动活动的时候需要,发送广播的时候需要,操作数据库的时候需要,使用通知的时候需要,等等等等。所以有时候在需要使用Context时,却不知道该怎么获得Context将会是一件非常伤脑筋的事情。本节我们就来介绍一

2020-09-20 02:19:24 995

原创 Android基础知识——运用手机多媒体

文章目录1.将程序运行到手机上2.使用通知2.1通知的基本用法1.将程序运行到手机上下面我们讲到的一些代码,可能只有把程序运行到真机上,才会看到效果,教程。2.使用通知通知是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。2.1通知的基本用法使用步骤:...

2020-09-13 17:44:19 359

原创 Android基础知识——Material Design实战

文章目录1.什么是Material Design2.Toolbar3.滑动菜单3.1DrawerLayout3.2NavigationView1.什么是Material DesignMaterial Design是由谷歌的设计工程师们基于传统的优秀设计原则,结合丰富的创意和科学技术所发明的一套全新的界面设计语言,包含了视觉,运动,互动效果等特性。而事实上,Material Design更像是一种设计思想和理念,而本节我们并不是要以设计师的角度去学习Material Design,而是以一个开发者的角度去

2020-09-13 17:43:54 1861

原创 Android基础知识——探究服务

文章目录1.服务是什么2.Android多线程编程2.1线程的基本用法2.2在子线程中更改UI2.3解析异步处理机制2.4使用AsyncTask1.服务是什么服务是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。服务并不会自动开启线程,所有代码默认运行在主线程中。2.Android多线程编程当我们执行一些耗时操作,如发起一条网络请求时,考虑到网速等其他原因,服务

2020-09-05 16:13:50 284

原创 Android基础知识——使用网络技术

文章目录1.WebView的用法2.使用HTTP协议访问网络2.1使用HttpURLConnection2.2使用OkHttp3.解析XML格式数据3.1Pull解析方式3.2SAX解析方式4.解析JSON数据4.1使用JSONObiect4.2使用GSON5.网络编程的最佳实践5.1HttpURLConnection5.2OkHttp1.WebView的用法有时候我么可能会遇到一些比较特殊的需求,比如说要在应用程序里展示一些网页,但又明确指出不允许打开系统的浏览器。这个时候我们就可以利用WebView

2020-09-05 16:13:40 285

原创 Android基础知识——探究内容提供器

文章目录1.内容提供器简介2.运行时权限2.1Android权限机制详解2.2在程序运行时申请权限3.访问其他程序中的数据3.1ContentResolver的基本用法3.2读取联系人4.创建自己的内容提供器4.1创建内容提供器的步骤4.2实现跨程序数据共享1.内容提供器简介内容提供器主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序的数据,同时还能保证被访问数据的安全性。不同于文件存储和 SharedPreferences 存储中的两种全局可读写操作模

2020-09-05 16:13:26 279

原创 Android基础知识——数据存储方案

文章目录1.持久化技术简介2.文件存储2.1将数据存储到文件中2.2从文件中读取数据3.SharedPreferences存储3.1将数据存储到SharedPreferences中3.2从SharedPreferences中读取数据4.SQLite数据库存储4.1创建数据库4.2升级数据库1.持久化技术简介数据持久化技术就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失。而Android的持久化技术主要有三种实现方式:1.文件存储;2.SharedPer

2020-09-05 16:12:45 404

原创 Android基础知识——详解广播机制

文章目录1.广播机制简介2.接受系统广播2.1动态注册广播2.2静态广播注册3.发送自定义广播3.1发送标准广播3.2发送有序广播4.使用本地广播1.广播机制简介当android手机的状态发生变化时,系统就会发送一条广播,而开发者则可以自定义广播接收器来接受自己所需的广播,从而执行一些逻辑代码(例如:当手机电量剩余15%时,提示用户是否进入省电模式),另外不止系统可以发送广播,开发者也可以自定义发送广播。而广播则主要分为两种类型:标准广播,有序广播。标准广播:一种完全异步执行的广播,在广播发送后,所

2020-08-27 11:39:55 1183

原创 Android基础知识——探究碎片

文章目录1.碎片是什么2.碎片的使用方法2.1静态引入碎片2.2动态引入碎片2.3再碎片中模拟返回栈2.4碎片和活动之间进行通信3碎片的生命周期3.1碎片的状态3.2碎片的回调方法4.动态加载布局的技巧4.1使用限定符4.2使用最小宽度限定符1.碎片是什么碎片是一种可以嵌入在活动中的UI片段,它能够使程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的十分广泛。(碎片和活动是十分相似的,两者同样都能包含布局,同样都有自己的生命周期,你甚至可以将碎片理解为一个迷你的活动,虽然这个迷你的活动有可能是和普

2020-08-27 11:39:44 343

原创 Android基础知识——UI开发

文章目录1.如何编写程序界面2.常用控件的使用方法2.1TextView2.2Button2.3EditText2.4ImageView2.5ProgressBar2.6AlterDialog2.7控件的可见属性3.Android的4大基本布局3.1线性布局3.2相对布局3.3帧布局3.4百分比布局4.自定义控件4.1引入布局4.2自定义控件5.ListView——滚动控件5.1定制ListView界面5.2提升ListView的运行效率5.3ListView的点击事件6.RecyclerView——更强大

2020-08-27 11:39:33 551

原创 Android基础知识——探究活动

文章目录1.活动的基本概念2.活动的基本用法2.1活动创建的完整流程2.2在活动中使用Toast2.3在活动中使用Menu2.4销毁一个活动3.使用Intent实现跳转活动3.1适用显示Intent3.2使用隐式Intent4.实现活动之间的信息传递1.活动的基本概念活动:它是一种可以包含用户界面的组件,主要用于和用户进行交互。活动提供了应用程序绘制其UI的窗口。此窗口通常填充屏幕,但可能小于屏幕并浮动在其它窗口的顶部。通常一个应用活动在应用程序中实现一个屏幕。大多数应用包含多个屏幕,即多个活动,一般会

2020-08-27 11:39:19 253

原创 线程学习(生产者消费者问题&哲学家吃饭问题)

文章目录线程的概念:概念:关系:区别:生产者消费者问题:问题描述:问题分析:代码展示:哲学家吃饭问题:问题描述:问题分析:问题解法一:问题解法二:线程的概念:概念:进程:从操作系统核心角度来说,进程是操作系统调度和分配内存资源,CPU时间片的基本单位,它为正在运行应用程序提供了运行环境。简单来说,进程是应用程序的一次运行活动。线程:线程是程序内部的一个顺序代码流,它是CPU调度资源的最基本单位。关系:(1) 线程并不能独立地执行,它必须依附在一个运行的应用程序上(即进程上),进程至少包含一个线程

2020-06-06 16:56:15 677

原创 java类和对象内容总结

1.面向对象和面向过程的区别:面向过程:是以过程为中心的编程思想,是按照过程一步一步解决问题的思想,比较适合于解决简单的问题。例如如何开车,我们就会想第一步干什么,第二步干什么。。。。。。这就是一个典型的面向过程的思维方式。面向对象:面向对象是一种对现实世界理解和抽象的方法,以对象为导向的编程思想,比较适合用于解决较为复杂的问题。例如如何造车,这个问题就会比较麻烦,从过程入手就会很复杂,而这时我们可以考虑先做出车的部件比如发动机,轮胎。。。。。。这就是一个典型的面向对象的思维方式。2.对象和类的关系:

2020-05-26 17:25:59 227

原创 linux系统下的文件与文件系统的压缩

今天我们就来聊一下关于在Linux系统下的文件压缩问题。在Linux系统上最常见的压缩命令就是gzip,bzip2,xz以及一个打包命令tar。接下来我们一个一个来看:1.gizpgzip可以说是目前应用最广的压缩命令了,目前可以解开compress,zip,gzip等软件所压缩的文件。接下来我们来看看这个命令的具体语法:gzip [-cdtvk#] 文件名选型与参数:-c:将压缩...

2020-05-06 18:25:47 210

原创 管理系统的实现

管理系统应该是每个计算机学习者的第一个项目吧。(笔者也不例外)由于最近疫情较为严重,所以笔者所选的主题是新冠病毒的管理系统。我们先来看一下这个系统的大体框架吧:1.框架本系统分为两个端一个是用户端另一个是管理员端。用户端...

2020-04-08 11:19:46 1174 2

原创 2019西邮Linux小组纳新题

1.下面代码段将打印出多少个’=’?运用相关知识解释该输出。int main(){ for(unsigned int i=3;i>=0;i--) { putchar('='); }}无数个“=”,因为i的类型为无符号类型没有负数,所以程序会一直循环下去。2.下列三种交换整数的方式是如何实现交换的?/...

2020-03-01 17:03:28 125

原创 2018西邮Linux小组纳新题

1.分析以下代码段,并解释输出结果和原因int main(int argc,char *argv[]){ int nums[3][3] = {1,2,3,4,5,6,7,8,9}; printf("%d\n",nums[1][-2]); printf("%d\n",(-1)[nums][5]); printf("%d\n",-1[nums][5]); return 0;}...

2020-03-01 17:03:16 135

原创 2017西邮Linux小组纳新题目

1.分析下列程序的输出。int main(int argc, char *argv[]) { int t = 4; printf("%lu\n", sizeof(t--)); printf("%lu\n", sizeof("ab c\nt\012\xa1*2")); return 0; }第一个输出为4,因为sizeof只考虑类型,而t为int型故输出为4。第二个输出...

2020-03-01 17:02:43 85

原创 C语言中的内存模型(栈区,堆区等的分别)

众所周知代码是储存在内存中的,那么C语言的代码是全部储存在一起的还是分开存储的呢,它们储存的地方到底在哪呢?今天我们就来一探究竟。代码区:存放函数体的二进制代码。常量区:存放一般的常量、字符串常量等。这块内存只有读取权限,没有写入权限,因此它们的值在程序运行期间不能改变。(这点尤其重要,一定要牢记)静态区(全局区)...

2019-12-22 19:02:24 464

原创 递归内容的讲解

算法思想:递归就是将一个不容易实现的大问题拆分成易于实现的小问题。倘若拆分的问题依然不容易解决,那么可以继续进行拆分,只到那个小问题很容易解决时,那么这个大问题也便解决了。举例(阶乘):倘若现在要计算10的阶乘,由于太大我们暂时不清楚,但是假使我们知道了9的阶乘也便知道了10的阶乘,可是我们现在也不清楚9的阶乘是多少呀,但是假使我们知道了8的阶乘也便知道了9的阶乘(以此类推)······现在如...

2019-12-15 20:47:06 267

原创 排序算法合集(C语言)

1.冒泡排序算法一种比较基础的排序方法,其核心思想是:在数列中从左向右(或从右向左)依次两两比较,若前者大于后者则两者交换位置(最终结果为从小到大排列)。思考:由于该方法在一次扫描后无法完成排序,所以需要一级循环来控制它的扫描次数;在每一次扫描时需要从左到右遍历一次因此还需要一级循环来控制扫描时的进度。(我个人喜欢将这类问题想象成一个二维坐标,一层循环代表x轴,一层循环代表y轴,通过这两层循环...

2019-12-04 21:08:08 562 2

原创 C语言入门内容

程序设计入门程序设计核心思想:计算机速度快,很适合做运算和逻辑判断工作。所以程序设计的重点在于,把需要计算机完成的工作分成若干个步骤,然后依次让计算机执行。注意这里的“依次”二字,步骤之间是有先后顺序的。1.1算数表达式(基础知识)整形做除法所得结果会舍去小数部分。整形输出用%d,浮点数输出用%f,可以用%._f来限制小数位数。有浮点数参与的运算,结果均为浮点数。数学函数sqrt(x...

2019-12-01 19:40:13 221 1

空空如也

空空如也

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

TA关注的人

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