技术标签: java 学习笔记 android android studio 前端 后端 移动应用开发
什么是Android?
Android本指“机器人”,谷歌公司将绿色机器人设计为Android的标识,表示Android系统符合环保概念,是一个轻薄短小,功能强大的移动系统,是第一个真正为手机打造的开放性系统
Android和IOS的主要区别
第一代:最初的模拟、仅限语音的蜂窝电话标准(1G) --> 第二代:以数据语音传输技术为核心(2G) --> 第三代:将无线通信与国际互联网等多媒体通信结合(3G) --> 第四代:IMT-Advanced技术(4G) --> 第五代:尚未正式商用(4G)
Dalvik是谷歌自己设计用于Android平台的虚拟机,主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等重要功能
配置环境(JDK版本最低为1.7,系统空闲内存至少为2GB) --> 下载Android Studio --> 安装完成 --> Android Studio配置
参考文章:从零开始的安卓开发环境搭建与入门_狂神说-程序员秘密_从零开始的安卓开发环境搭建与入门
单击ADV Manager标签 --> 选择设备类型及尺寸 --> 选择合适的SDK版本 --> 创建模拟设备 --> 完成创建
参考文章:Android Studio 和 SDK 下载、安装和环境变量配置
(1)app:用于存放程序的代码和资源等内容,它包含很多子目录
(2)build.gradle:程序的gradle构建脚本
(3)local.properties:用于指定项目中国所使用的SDK路径
(4)setting.gradle:用于配置在Android程序中使用到的子项目(Moudle)
资源:可以在代码中使用的外部文件(res目录下)
根据图片资源的用途不同分为应用图标资源和界面中使用的图片资源:应用图标资源应放置在mipmap开头的文件夹中,界面中使用的图片资源应该放置在drawable开头的文件夹中
根据设备屏幕密度的不同,Android系统会自动匹配不同文件夹中的图片资源,如图
调用资源文件有两种方式:
(1)通过Java代码调用图片文件
getResources().getDrawable(R.mipmap.ic_launcher); //调用mipmap文件夹中的资源
getResources().getDrawable(R.drawable.icon); //调用以drawable开头的文件夹中的资源文件
(2)在XML布局文件中调用图片资源
@mipmap/ic_launcher //调用mipmap文件夹中的资源
@drawable/icon //调用以drawable开头的文件夹中的资源文件
Android中的样式和主题,都是用于为界面元素定义显示风格
(1)主题
主题是一种或多种的格式化属性集合,在程序中调用主题资源可以改变窗体的样式,对整个应用或某个Activity存在全局性影响,主题资源定义在res/values目录下的style.xml文件中
<style>标签用于定义主题,parent属性用于定义指定Android系统提供的父主题,其中的 <item> 标签用来设置主题样式
<resource>中可以有多个<style>,<style>中也可以有多个<itme>标签
<resource>中可以有多个<style>,<style>中也可以有多个<itme>标签
要调用style.xml中的主题,可在src/AndroidMainifest.xml中设置,也可以在代码中设置
<application
...
android:theme="@style/AppTheme"
</application>
setTheme(R.style.AppTheme);
(2)样式
通过改变主题改变整个窗体样式,但是主题不能设置View控件的具体样式,因此需要创建一个样式来美化View控件,样式存放在res/values目录下的styles.xml文件中
在上述代码中通过标签设置控件样式,如宽高等
在布局文件的View控件中通过style属性调用textViewStyle样式的实例代码:
<TextView
...
style="@style/textViewStyle"/>
在程序的res目录下有一个layout文件夹,其中存放的是程序中所有布局资源文件,用于搭建程序中的各个界面
当创建一个Android程序时,会默认在res/layout文件夹中生成一个布局资源文件activity_main.xml,也可以在res/layout文件夹中创建新的布局资源文件
在程序中调用布局资源文件,同样有两种调用方式
在Activity中,找到onCreate()方法,在该方法中通过调用setContentView()方法来加载Activity对应的布局资源文件
setContentView(R.layout.activity_main);
在XML布局文件中可以通过标签调用其他的布局资源文件
<include layout = "@layout/activity_main"/>
为了在开发中更加方便快捷的使用字符串,Android系统提供了强大的字符串资源,我们可以在res/values目录中的strings.xml文件中定义字符串
<resources>
<string name = "app_name">字符串</string>
<resources>
上述代码中,标签定义的就是字符串资源,strings.xml文件中只能有一个根元素,但根元素间可以包含多个标签
字符串资源的调用同样有两种方式
getResources().getString(R.string.app_name);
@string/app_name
在Android开发过程中,View空间默认的颜色不足以满足设计需求,因此会使用颜色资源来改变View控件的颜色,颜色资源通常定义在res/values/colors.xml文件中
上述代码中,标签定义的就是颜色资源,colors.xml文件中只能有一个根元素,但根元素间可以包含多个标签
颜色资源的调用同样有两种方式
getResources().getColor(R.color.colorPrimary);
@color/colorPrimary
在Android界面中View的宽高和View之间的间距值是通过尺寸资源设置的,资源通常定义才res/values/dimens.xml中
上述代码中,标签定义的就是尺寸资源,dimens.xml文件中只能有一个根元素,但根元素间可以包含多个标签
尺寸资源的调用同样有两种方式
在Activity中,找到onCreate()方法,在该方法中通过调用getResources().getDimension(方法来加载Activity对应的尺寸资源
getResources().getDimension(R.dimen.activity_horizontal_margin);
@dimen/activity_horizontal_margin
●px(pixels, 像素) :每个px对应屏幕上的一个点。例如,720x 1080的屏幕在横向有720个像素,在纵向有1080个像素.
●dp ( density-independent pixels,设备独立像素) : dp 与dip ( density-independent pixels)的意义相同,是一种与屏幕密度无关的尺寸单位。在每英寸160点的显示器上,ldip=1px. 当程序运行在高分辨率的屏幕上时,dp就会按比例放大,当运行在低分辨率的屏幕上时,dp就会按比例缩小。
●sp (scaled pixels, 比例像素) :主要处理字体的大小,可以根据用户字体大小首选项进行缩放。sp和dp是 比较相似的,都会在不同像素密度的设备.上自动适配,但是sp还会随着用户对系统字体大小的设置进行比例缩放,换句话说,它能够跟随用户系统字体大小变化而改变。所以它更加适合作为字体大小的单位。
●in(inches, 英寸) :标准长度单位。1英寸等于2.54厘米。 例如,形容手机屏幕大小,经常说3.2 (英)寸3.5(英)寸4(英)寸就是指这个单位。这些尺寸是屏幕对角线的长度。如果手机的屏幕是4英寸,表示手机的屏幕(可视区域)对角线长度是4x2.54= 10.16(厘米)。
●pt (points, 磅) :屏幕物理长度单位,1磅为1/72英寸。
●mm ( millimneters, 毫米) :屏幕物理长度单位。
在实际开发中,每个Android程序都会进行一系列的测试工作,确保程序能够正常运行。测试Android程序有多种方式,例如单元测试和LogCat (日志控制台)等,本节将针对这两种调试方式
单元测试是指在Android程序开发过程中对最小的功能模块进行测试,单元测试包括Android单元测试和Junit单元测试
●Android单元测试:该测试方式执行测试的时候需要连接Android设备,速度比较慢,适合需要调用Android API的单元测试。
●Junit单元测试:该测试方式不需要依赖Android设备,在本地即可运行,速度快,适合只对Java代码功能进行的单元测试。
Android Studio 3.2版本在创建项目时,会默认在app/src/androidTest 和app/src/test文件夹中创建Android单元测试类ExampleInstrumentedTest和Junit单元测试类ExampleUnitTest
LogCat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息,Android程序运行在设备中时,程序的调试信息就会输出到该设备单独的日志缓冲区中,要想从设备日志缓冲区中取出信息,就需要学会使用LogCat.
Android使用android.util.Log类的静态方法实现输出程序的调试信息,Log类所输出的日志内容分为六个级别,由低到高分别是Verbose、Debug、 Info、 Warmning、 Error、 Assert, 这些级别分别对应Log类中的Log.v()、Log.d()、 Log.i()、 Log.w()、 Log.e()、 Log.wtf()静 态方法
参考文章:Android单元测试与日志输出
特别声明:学习资源来源于传智教育 | 高校教辅平台
文章转自http://www.cnblogs.com/jian-li/p/5618464.htmlimu误差的效果陀螺仪的偏移对于速度的影响是二次的,对于位置的影响是三次的。对于收敛的并且设计很好的滤波器,估计和去除imu的误差,能够提高姿态的精度和长期稳定性常见误差项:首先介绍几个常见的概念:1.重复性假设所有的条件一样,对于相同的输入,传感器输出相同的值的能力(对于每次启动都相同)。陀螺仪的零...
smacksmack介绍smack 英文: Simplified Mandatory Access Control Kernel 中文: 简单强制访问控制内核 smack smack配置 LSM(Linux Security Module)是支持多种安全策略的Linux内核级的框架,目前有SELinux、SMACK、TOMOYO Linux纳入到LSM框架.smack核心机制多媒体Gstr
final finally finalize的区别:final 可以修饰 类 ,方法 ,变量 :1.修饰类:类不可被继承扩展 2.修饰方法:方法不可被重写 3.修饰变量:变量不可被修改finally是java保证代码一定被执行,在 try - catch - finally 中完成jdbc的关闭finalize 是java的一个机制:保证对象在被垃圾回收完成特定的资源回收比较浅显,之后补...
data () { }等同于data: function() { }render:h=>(App)等同于render: function(h) { return h(app)}等同于render: h=> { return h(app);}conponents: { vTitle, vButton }等同于c...
1、loading models#加载以resnet50为例子import torchvision as pmodel = p.models.resnet50(pretrained=True) 此时加载数据模型以后,我们要是思考如何利用它,但是在此之前你必须了解你加载的模型的结构。2、处理分类数据 如果是用来处理分类数据: 你只需要替换最后一个全连接分类进行输...
未经博客主同意不能转载 转载请声明转载处:https://mp.csdn.net/postedit/79747748获取App数据缓存大小可以通过以下几种方式: 1:代码方式 Environment.getExternalStorageDirectory().getAbsolutePath();//获取SD卡根目录: Content. getCacheDir(); // ...
又是一年九月来临,都说新学期新气象,你是不是还在为新的一学期新的课程烦恼呢?一叠叠的书本和复习资料是不是还记不住呢?小编在学习时也总是感叹自己的大脑容量为什么不能再大一点呢,或者是有哆啦A梦一样的记忆面包,能把我看过的东西都背下来那该有多号呢! 一次背了很多内容,当时还记得很清楚可是过了...
http://blog.163.com/[email protected]/blog/static/424388372008382912359/BMP格式补充(16bbp & 32bbp & 4字节对齐 & pixel data存放顺序) BMP格式补充(16bbp & 32bbp & 4字节对齐)(DWORD = 4字节)Bits Per Pixel = 16
Description 现有一棵 n 个节点的棵, 树上每条边的长度均为 1。 给出 m 个询问, 每次询问两个节点 x,y, 求树上到 x,y 两个点距离相同的节点数量。Input 第一个整数 n, 表示树有 n 个点。 接下来 n-1 行每行两整数 a, b, 表示从 a 到 b 有一条边。 接下来一行一个整数 m, 表示有 m 个询问。 接下来 m...
参照:http://blog.csdn.net/songyefei/article/details/7371571在上一篇中,我们在一个控制台应用程序中编写了一个简单的WCF服务并承载了它。先回顾一下服务端的代码:using System;using System.Collections.Generic;using System.Linq;using System.Te...
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录示例代码效果图参考链接示例代码# -*- coding:utf-8 -*-import sysfrom PySide6.QtCore import *from PySide6.QtGui import *from PySide6.QtWidgets import *class DelegateButton( QStyledItemDelegate ) : onClick = Signal( int, int .