Android大致分为四层架构1、Linux内核层:提供各种硬件驱动,如显示驱动,音频驱动,相机驱
动,蓝牙驱动。。。。
2、系统运行库层:通过C/c++库为android地图提供支持
3、应用框架层:提供构建应用程序时肯用到的各种API
(应用程序编程接口),自带的一些核心
应用就是使用这些API完成的
4、应用层:所有安装在手机上的应用程序都是这一层的,如:自带的联
系人等,或者你开发的程序
 
四大组件: 活动:凡是在应用中可见的部分都是放在活动中的
服务:不直接可视,一直在后台默默运行,即使用户退出了应用,服务仍是可以继续运行的
广播接收器:允许你的应用接收来自各处的广播,如电话、短信等,也可以向外发出
内容提供器:为程序之间共享数据提供了可能,比如读取电话簿中的联系人
 
有控件系统轻松编写漂亮的界面,也可以定制属于自己的控件
 
android系统还自带SQLite这种嵌入式关系型数据库
 
as需要加载gradle,国内需要换源到阿里源(改build.gradle文件)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
// google()
//jcenter()
maven{ url 'https://maven.aliyun.com/repository/google'}
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.2" // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
} allprojects {
repositories {
//google()
//jcenter()
maven{ url 'https://maven.aliyun.com/repository/google'}
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
}
} task clean(type: Delete) {
delete rootProject.buildDir
}
local.properties
这个文件用于指定本机中的Android SDK路径,通常内容都是自动生成的,我们并不需要修改。除非你本机中的Android SDK位置发生了变化,那么就将这个文件中的路径改成新的位置即可。
 
java
java目录是放置我们所有Java代码的地方,展开该目录,刚才创建的HelloWorldActivity文件就在里面。
 
res
简单点说,就是你在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下,所以不用担心会把整个res 目录弄得乱糟糟的。
 
AndroidManifest.xml
这是你整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。这个文件以后会经常用到
 
归纳一下res目录。所有以 drawable开头的文件夹都是用来放图片的,所有以mipmap开头的文件夹都是用来放应用图标的,所有以values开头的文件夹都是用来放字符串、样式、颜色等配置的,layout文件夹是用来放布局文件的。
 
 

//**日志工具
Android中的日志工具类是 Log ( android.util.Log ),这个类中提供了如下5个方法来供我们打印日志。
Log.v()。用于打印那些最为琐碎的、意义最小的日志信息。对应级别verbose,是Android日志里面级别最低的一种。
Log.d()。用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比 verbose高一级。
Log.i()。用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分析用户行为数据。对应级别info,比 debug高一级。
Log.w()。用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别warn,比 info高一级。
Log.e()。用于打印程序中的错误信息,比如程序进入到了catch语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别error,比 warn高一级。
其实很简单,一共就5个方法,当然每个方法还会有不同的重载,但那对你来说肯定不是什么难理解的地方了。我们现在就在HelloWorld项目中试一试日志工具好不好用吧。
打开HelloWorldActivity,在 onCreate()方法中添加一行打印日志的语句,如下所示:protected void oncreate(Bundle savedInstancestate) {
super.onCreate( savedInstanceState) ;
setcontentView (R. layout.hello_world_layout) ;
Log.d ( "HelloworldActivity". "onCreate execute"");
Log.d()方法中传入了两个参数:第一个参数是 tag,一般传人当前的类名就好,主要用于对打印信息进行过滤;第二个参数是msg,即想要打印的具体的内容。
现在可以重新运行一下 HelloWorld这个项目了,点击顶部工具栏上的运行按钮,或者使用快捷键 Shift + F10 (Mac系统是control + R ),等程序运行完毕,点击Android Studio底部工具栏的Android Monitor,在 logcat中就可以看到打印信息了,如图1.31所示。
**//
 
技巧:参数,每次写一遍显然太过麻烦。这里还有一个小技巧,我们在onCreate()方法的外面输入logt然后按下Tab键,这时就会以当前的类名作为值自动生成一个TAG常量,如下所示:
public class HelloworldActivity extends AppCompatActivity {
private static final string TAG = "HelloworldActivity";
}
解决double精度的问题:

最新文章

  1. git push :推送本地更改到远程仓库的三种模式
  2. c中的进制与内存分析
  3. 【POJ 3294】Life Forms 不小于k个字符串中的最长子串
  4. WinServer 之 发布WebService后调用出现" The test form is only available for requests from the local machine. "
  5. Oracle EBS-SQL (PO-14):检查供应商信息sql
  6. MFC 操作控件数据
  7. MVC EF 修改 封装类 通用泛型方法(二)
  8. javascript面向对象一:函数
  9. [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟
  10. Apache Storm 1.1.0 中文文档 | ApacheCN
  11. C#设计模式之六原型模式(Prototype)【创建型】
  12. 【转】linux shell 逻辑运算符、逻辑表达式详解
  13. C++用LuaIntf调用Lua代码示例
  14. 【Unity Shaders】Using Textures for Effects——通过修改UV坐标来滚动textures
  15. Windows下vue-cli脚手架搭建入门<一>
  16. js模拟链表
  17. Photoshop的混合模式
  18. 走进DOM:HTML DOM
  19. codeforces水题100道 第十四题 Codeforces Round #321 (Div. 2) A. Kefa and First Steps (brute force)
  20. python之路之函数02

热门文章

  1. HMS Core积极探索基于硬件耳返的功能,帮助唱吧整体唱歌延迟率降低60%
  2. 我们一起来学Shell - shell的循环控制
  3. LibOpenCM3(四) VSCode IDE 环境配置
  4. [LeetCode]1281. 整数的各位积和之差
  5. python-对于一个用例有多个步骤,转换成1条案例的处理方法
  6. ctf.show-misc31
  7. 基于Windows系统应用的权限维持
  8. EXCEL应用之商机分析:企业商机分析模板免费用
  9. Map<String,String>转Json转Base64
  10. Bagging与随机森林