为了更好地自定义 View,还需要掌握 View 的底层工作原理,比如View的测量流程、布局流程以及绘制流程,掌握这几个基本流程后,我们就对 View 的底层更加了解,这样我们就可以做出一个比较完善的自定义...下面先看一下MeasureSpec内部的一些常量的定义,通过下面的代码,应该不难理解MeasureSpec的工作原理: public static class MeasureSpec {...AT_MOST 父容器指定了一个可用大小即SpecSize,View的大小不能大于这个值,具体是什么值要看不同View的具体实现。它对应于LayoutParams中的wrap_content。...LayoutParams.MATCH_PARENT:精确模式,大小就是窗口的大小; LayoutParams.WRAP_CONTENT:最大模式,大小不定,但是不能超过窗口的大小; 固定大小(比如100dp...当View的宽/高是wrap_content时,不管父容器的模式是精准还是最大化,View的模式总是最大化并且大小不能超过父容器的剩余空间。
View 的工作流程主要是指 measure、layout、draw 这三大流程,即测量、布局和绘制,其中 measure 确定 View 的测量宽/高,layout 确定 View 的最终宽/高和四个顶点的位置...为什么呢?这个原因需要结合上述代码和表1才能更好地理解。...getChildMeasureSpec的工作过程已经在上面进行了详细分析,通过表1可以更清楚地了解它的逻辑。...等,为什么ViewGroup不像View一样对其onMeasure方法做统一的实现呢?...为什么说是错误的,首先其违背了系统的内部实现规范(因为无法通过错误的MeasureSpec去得出合法的SpecMode,从而导致measure过程出错),其次不能保证一定能measure出正确的结果。
3.uniapp 配置安卓模拟器 检测不到模拟器的解决办法:https://ask.dcloud.net.cn/article/97 公司电脑上各种方法试变了,回家用自己电脑,那真是一气呵成。...45416117/article/details/121354191 2.H5调用摄像头相关说明:https://www.cnblogs.com/kuangke/p/14278565.html 3.uniapp 安卓...WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。...2.Native.js:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/88 3.安卓首屏关闭的机制:https://ask.dcloud.net.cn...H5 ios录制不支持webm格式(支持mp4,安卓只支持webm不支持mp4):https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder
安卓webview在某些版本使用location.href时会闪退。...主要问题是 通过window.location.href来重定向的,安卓不会正确触发shouldOverrideUrlLoading。
为什么需要广播接受者 广播: 1、电台:发送一定频道的广播消息,50mhz; 2、收音机:调整到一定频道,接收广播消息; android应用程序里面的电台:系统内置的一个服务,会把事件(电量不足、电量充满...、开机启动完成)作为一个广播消息发送其他的接收者; android应用程序里面的收音机:自己写的一个广播接收者的一个类。...,系统会自动启动广播接收者的进程,调用onReceive方法,接收消息。...2.3的模拟器,4.0之后版本没有卸载、挂载、移除SD卡的功能。...就能接收到的广播; //发送一个广播消息(无序广播) sendBroadcast(intent); 有序广播: 当广播把消息发送出去后,消息会根据广播接收者的优先级从高到低一级一级地下发消息。
windows下的服务:没有界面、长期运行在后台的应用程序; android下的服务:应用程序的一个组件,没有界面activity,长期运行在后台; 进程:是应用程序运行的载体。...Visible process (可视进程) 应用程序的ui界面,用户还可以看到,但是不能操作了。...:解除服务,停止服务里面的方法; stopService:停止服务,销毁服务对象; 为什么要引入bindservice的API 为了调用服务中的业务逻辑方法。...(重点) 本地服务:写在自己的应用程序的工程里的服务 ,使用自己应用程序的进程运行这个服务; 远程服务:写在别的应用程序的工程里的服务,使用别的应用程序的进程运行这个服务(安装在同一个手机上的应用程序)...; IPC: Inter Process Communication(进程间的通讯); aidl: Android Interface definition language 安卓接口定义语言; aidl
本篇文章主要说一下月日历数据、月视图绘制以及点击日期的实现。 数据 数据部分,网上能找到比较完整的工具类,主要是根据本月和上月的天数以及本月第一天是周几来计算。...首先计算上月日期: 由本月的第一天是周几和上个月的天数,得出上月的日期的显示 int temp = lastMonthDays - firstDayOfWeek + 1;//上个月的天数减去本月第一天周几再加上...1 再计算本月日期:本月内的数据根据该月的天数跑循环。...四个点确定一个矩形,可以在纸上画一下大致的图案,大致画个一两行矩形,应该就找到规律了,感觉有点像以前上学时做的找规律的数学题。...: 1、是不是本月的数据(用颜色区分本月和其他月的数据) 2、是不是今天 3、有没有选中的日期 4、显示不显示农历 其中今天和选中的日期用圆环表示,就需要在当天和选中的日期的矩形中绘制圆环。
大家好,又见面了,我是你们的朋友全栈君。...JBPM工作流框架应用 导入jar包 jbpm案例中获取配置文件,并配置本地数据库 创建流程,并进行相关修改 流程及流程内任务等的草操作 import java.io.File;...query.list(); for (Task task : list) { String executionId = task.getExecutionId(); //用于特殊情况,不需要李四审批时,查到他的所要执行的任务...id,传递给test10,根据传入的id,越过此审批。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
标签的值就它的界面的标题 4、activity的label标签的值就它的桌面快捷图标的名称 5、application中的label标签和activity中的label标签不是一个概念,application...中的label表示应用程序的名称,activity中的label标签表示的是它的界面的名称。...uri = intent.getData(); 意图设计的目的 意图设计的目的:解耦,实现应用程序的高内聚、低耦合。...实例,做一些扫尾工作 1、activity创建时调用onCreate、onStart、onResume; 2、关闭activity时调用:onPause、onStop、onDestroy; 3、最小化...android:launchMode="singleTop" 如果任务栈的栈顶存在这个要开启的activity,不会重新的创建activity,而是复用已经存在的activity。
e.printStackTrace(); } }; }.start(); } } 线程不能修改...从Androi4.0开始,google更加UI界面运行的流畅性,强制要求访问网络的操作不能在主线程中进行,只能在子线程中进行。...1减少开发成本 耗时 smartImageView的工作原理 1、写一个类继承ImageView import java.io.InputStream; import java.net.HttpURLConnection...if(TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)){ Toast.makeText(this, "qq和密码不能空...if(TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)){ Toast.makeText(this, "qq和密码不能空
2.AGP源码的打开方式 看 AGP 代码的时候,我一直纠结要不要下载 AGP 的源码,后来听同事大佬建议,直接使用了项目依赖的代码进行分析。 主要的原因有两点: 1....进入重点方法 basePluginApply 方法,这个方法的前期做了很多的检查工作,包括路径、版本和 AGP 版本等等,之后又做了很多监听工作,看一下源码: private void basePluginApply...第三步 配置Project 需要注意的是,此配置并不是对应 Gradle 生命周期的配置,而是针对当前 Project 做一些配置工作。...new LibraryDependencyCacheBuildService.RegistrationAction(project).execute(); // aapt准备工作...省略 createLintClasspathConfiguration(project); } 我对上述代码的理解是创建Task前的准备工作,并且,上面代码中描述的 xxxAction
应用程序:一组组件(activity service provider receiver)的集合 一般情况下,一个应用程序对应一个进程 一般情况下,关闭掉应用,关闭掉所有界面,应用程序的进程还在后台运行...安卓系统采用一组策略帮助我们管理进程 进程按照优先级分为不同的等级 1.前台进程,用户可以看到这个进程里面某个activity的界面 2.可见进程,用户仍然可以看到这个进程里面的某个界面,但是不可以操作他...3.服务进程,如果一个应用程序有一个服务在后台运行 4.后台进程,没有任何服务的进程,打开一个activity之后,按了home键,最小化了 5.空进程, 没有任何活动组件的进程 当系统内存不足的时候
---- title: 安卓基础干货(三):安卓数据库的学习 copyright: true categories: 安卓基础干货 date: 2018-01-10 19:35:26 tags: [Android...BLOB(二进制对象)数据类型,也接受varchar(n)、char(n)、decimal(p,s) 等数据类型, SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么...但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误。...helper = new DBHelper(this, "account.db", null, 1); onCreate是在数据库创建的时候调用的,主要用来初始化数据表结构和插入数据初始化的记录...onUpGrade是在数据库版本升级的时候调用的,主要用来改变表结构 2、调用db = helper.getWritableDatabase(),得到数据对象 数据库sql语句的增删改查 创建表结构:
多种媒体的综合。图片、音乐、视频。 计算机表示图形的方式 1、bmp 以高质量保存所有类型的图片,用于计算机。...每个像素点的颜色是一个RGB,使用6个十六进制的数值来表示。 文件头信息占用的数据大小。 体积比较大。 2、jpg 以良好的质量保存图片,用于计算机、电子邮件或网络。...RGB ARGB 32 应用程序在启动时系统为它创建一个进程,系统为每个进程创建dalvik虚拟机(模拟器设置的VM Heap),当图片的大小大于虚拟机的堆内存空间时,就内存溢出(内存泄露);...解决办法:缩放图片加载到内存 步骤: 1、获得设备屏幕的分辨率; 2、得到原图的分辨率; 3、通过比较得到一个合适的比例值; 4、按照比例值缩放图片 5、把图片显示在imageview 缩放图片并加载到内存中...192.168.22.136:8080/11.mp4"); vv.start(); } } 视频播放器surfaceview(重点) surfaceview表面视图 双缓冲区:使用两个线程协调工作
在安卓中使用HTTP协议的最佳实践 在开发安卓应用时,网络通信是一个不可或缺的方面。HTTP协议是许多应用程序数据交换的基础,因此了解如何正确地使用它对于确保应用的性能和安全性至关重要。...选择合适的HTTP客户端 安卓提供了多种HTTP客户端,包括HttpURLConnection、OkHttp和Retrofit等。每个客户端都有其优势和特点。...安全网络通信 在进行网络通信时,保护数据和信息的安全性是非常重要的。以下是一些网络通信安全性的最佳实践: 减少敏感数据传输:尽量减少传输敏感或个人用户数据。...这样可以更容易地管理不同部分应用程序中的网络请求。 结论 在安卓应用开发中,正确使用HTTP协议对于提供良好的用户体验和保护用户数据至关重要。...希望这篇文章能够帮助您理解在安卓中使用HTTP协议的重要性以及如何实现最佳实践。
大家好,又见面了,我是你们的朋友全栈君。 Android手机USB调试在哪?安卓手机如何打开USB调试模式?...如果我们要将安卓手机连接到电脑上,从而传输文件、下载应用或ROOT等,都需要打开手机的USB调试模式。...安卓系统的版本有很多,它们的打开方法也各不相同,下面给大家介绍各版本安卓手机打开USB调试模式的方法。...4、再返回设置菜单界面选择开发者者选项; 5、点击打开右上角的开关,即可打开 USB调试模式; 6、打开USB调试模式后,下拉手机通知栏,将手机上连接电脑的USB模式设置为“仅充电”模式或“媒体设备...上述便是安卓手机打开USB调试模式的方法,需要将手机连接电脑下载应用或干嘛的,可以按照小编描述的方法来打开USB调试模式。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。
1.下载gradle 你导别人项目是需要下载相同的gradle包的,下面这个网站有,注意一般是下载对应版本的“gradle-x.x-all.zip”格式 https://services.gradle.org.../distributions/ 比如下载2.4版本的就要找2.4版本的all 2.改变gradle的环境变量配置 先在我的电脑右键 注意是在系统变量里改 改gradle的文件夹存放名字,我都装在一个文件夹下了...这里应该是引用这个目录下的debug.keystore文件而没有找到引起的 7.安卓模拟器怎么上网 方法一 PC机可以上网,PC机上面的Android模拟器不能上网。...其实只要使模拟器跟自己的PC在同一个网段内就行了: 首先,如果没有配置sdk的环境变量的,那么在CMD命令下进入sdk安装路径的platform-tools目录下(D:\Program Files\...获得百度的 ip 地址 然后在浏览器中输入 https:// 百度的 ip 地址 看看是否能够访问 如果能够访问 那么你就遇到了和我一样的问题 请继续看 打开你的 sdk 目录中的 emulator
答案是通过 ClassLoader 的加载机制。安卓虚拟机也有类似这样的机制,为了能编写出更高效的代码,我们有必要了解下ClassLoader 的加载机制。...本文先会分别详解安卓的 ClassLoader。 01 Java 的 ClassLoader 大多数安卓应用程序是由Java语言开发的。所以有必要先了解Java 的 ClassLoader。...安卓虚拟机运行加载的不是class文件,而是dex文件。dex文件是编译工具把所有的class文件进行合并,优化,然后生成的。...3)URLClassLoader 只能用于加载jar文件,但是由于 dalvik 不能直接识别jar,所以在 Android 中无法使用这个加载器。...包含多个路径用File.pathSeparator间隔开,在Android上默认是 “:” optimizedDirectory: 优化后的dex文件存放目录,不能为null libraryPath:
安卓刷机最流行的时代是智能手机发展的初期阶段,当时有很大一部分的发烧友对于安卓刷机有着极高的热情,就连最初小米公司在起步阶段直接打着黑科技发烧友的旗号进行宣传的,但是截止到今天来看刷机已经是低概率的时间了...行业的成熟其实分成两种情况一种是安卓系统自身功能的完善,现在的安卓系统相比刚发布之初已经发生了极大的变化无论从功能上还是性能上以及基础功能的配置上都有了极大程度的提升,其中在这点上行表现最明显的是很多中国的应用公司...,特别是最初通过工具软件打开市场的厂家,现在已经切实得感受到来自谷歌的压力,因为很多工具已经在谷歌生态建设的规划之中,而且现在的安卓系统生态已经非常成熟了,最初谷歌公司是需要的工具软件企业来助推生态的建设发展...而且现在的安卓技术已经能够包容很多的产品系列,除了手机,电视在一些穿戴类的产品也有覆盖,在谷歌从功能上还没完全落实之前还是存在很大的开发空间,现在只需要能够跟上更新的步伐就已经是很厉害的企业了,自主定制开发的空间已经变得越来越小了...安卓刷机是智能手机成长过程中一道亮丽的风景线,但是随着产业的成熟以及技术能力的提升,刷机也必然成为一种历史,已经太多成熟的方案来取代这种用户体验了,最早因为刷机还给很多手机修理店带来很多的生意,现在专门从事刷机功能的修理店已经活不下去了
是这样的,如果采用文件操作模式对外共享数据,数据的访问方式会因数据存储的方式而不同,导致数据的访问方式无法统一,如:采用xml文件对外共享数据,需要进行xml解析才能读取数据;采用sharedpreferences...使用ContentProvider对外共享数据的好处是统一了数据的访问方式。...路径(path)可以用来表示我们要操作的数据,路径的构建应根据业务而定,如下: 要操作person表中id为10的记录,可以构建这样的路径:/person/10 要操作person表中id...为10的记录的name字段, person/10/name 要操作person表中的所有记录,可以构建这样的路径:/person 要操作xxx表中的记录,可以构建这样的路径:/xxx 当然要操作的数据不一定来自数据库...Android系统提供了两个用于操作Uri的工具类,分别为UriMatcher 和ContentUris 。掌握它们的使用,会便于我们的开发工作。
领取专属 10元无门槛券
手把手带您无忧上云