Andriod 第一章(概念)

1.1 了解安卓

1.1.1 Android系统构架

  • Linux内核层
    为Android设备的各种硬件提供了底层的驱动,如显示、音频、照相机、蓝牙等
  • 系统运行库层
    通过一些c/c++库为Android系统提供了主要的特性支持,Android运行时库主要提供了一些核心库,允许开发者使用Java语言来编写Android应用
  • 应用框架层
    提供构建应用程序时可能用到的各种API
  • 应用层
    显示应用程序

1.1.2 Android版本
一般在使用时提供 5.0 以上的版本

1.1.3Android应用开发特色
Android所提供的开发工具

1、 四大组件

  • 活动
    所用Android应用程序的门面
  • 服务
    一直在后台运行
  • 广播接收器
    允许你的应用接受和发送来自各处的广播,比如电话、短信等
  • 内容提供器
    为应用程序之间共享数据提供了可能

2、丰富的系统控件

  • 为开发者提供了界面

3、SQLite数据库
4、多媒体
5、地理位置定位

1.2 分析Android项目
1.2.1 项目中资源的分析
Project主项目下:

  • .1、gradle 和 .idea文件 :无须关心
  • 2、app:项目中的代码、资源等内容几乎都是放置在这个目录下的
  • 3、build:无需关心
  • 4、gradle:包含了gradle wrapper的配置文件,若要启用gradle wrapper的方式,File->Settings->Build,Execution,
    · Deployment->Gradle
  • .5、gitignore:将指定的目录或文件排除在版本控制之外
  • 6、build.gradle:项目全局的gradle构建脚本,无需更改
  • 7、gradle.properties:全局的gradle配置文件,这里配置的属性将会影响到项目中所有的gradle编译脚本
  • 8、gradlew和gradlew.bat:用来在命令行界面中执行gradle命令的。其中gradlew在Linux和Mac系统中使用
    gradlew.bat是在Windows系统中使用
  • 9、HelloWorld.iml:用于标识此项目是一个IntelliJ IDEA项目
  • 10、local.properties:指定本机中的Android SDK路径
  • 11、settings.gradle:制定项目中所有引用的模块

app项目下

  • 1、build:无需关心
  • 2、libs:如果你的项目中使用了第三方的jar包,就要把这些包放在libs目录下
    app.src包下
  • 3、androidTest:编写Android测试用例的,对项目进行自动化测试的一种方式
    src.main包下
    • 4、java:存放Java代码之处
    • 5、res:项目中的所有图片、布局、字符换、串等资源都要存放到这个目录下,
      ①图片放在drawable目录下②布局放在layout目录下③字符串放在values目录下
    • 6、AndroidManifest.xml:程序中定义的所有的四大组件都要在这个文件底下进行注册,还可以在这个文件中给应用程序添加权限声明
  • 7、test:编写Unit Test测试用例的,对项目进行自动化测试的另一种方式
  • 8、gitignore:将app模板内的指定的目录或文件排除在版本控制之外
  • 9、app.iml:无需关心
  • 10、build.gradle:app模板的gradle构建脚本
  • 11、proguard-rules.pro:用于指定项目代码的混淆规则

1.2.2 详解某些重要的资源
1 、在AndroidManifest文件下,活动的注册:

 <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />   //主活动设置
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

.MainActivity是这个活动(项目)的名称,
intent-filter中的语句表示MainActivity是整个Project项目的主活动
MainActivity的活动代码:

public class MainActivity extends AppCompatActivity {
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
	}
}

onCreate()方法是一个活动被创建时必定要执行的代码,其中调用setContentView()方法,就是此方法给当前的活动引入了一个activity_main的布局,在布局文件中编写APP的界面
在activity_main.xml布局文件当中

 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
	    android:text="Hello World!"/>

TextView 为Android系统的一个控件,用于在布局中显式文字的,其中的android:text = “Hello World”就是界面中的文字

2、res目录中的资源
drawable类文件:存放图片
mipmap类文件:存放应用图标
values类文件:存放字符串、样式、颜色等
layout类文件:存放布局文件

举例:在res/values/strings.xml文件下的应用程序名的字符串,

<resources>
    <string name="app_name">Hello World</string>
</resources>
//一个应用程序名的字符串

可以通过两种方式来引用它:
①通过R.string.app_name来引用 ②在XML中通过@string/app_name
其中的string是可以替换的,若是引用图片资源,可换成drawable;若是引用应用图标,可换成mipmap;若是引用布局文件,可换成layout
例如,打开AndroidManifest.xml文件

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"		//指定项目的应用图标
        android:label="@string/app_name"		//制定项目的应用名称
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        ........
    </application>

3、build.gradle文件:
1)最外层目录下的build.gradle文件

buildscript {
    
    
    repositories {
    
    
        google()
        jcenter()	 //代码托管仓库
    }
    dependencies {
    
    
        classpath 'com.android.tools.build:gradle:3.4.1'			//该关键字声明了一个Gradle插件
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    
    
    repositories {
    
    
        google()
        jcenter()
    }
}
通常情况下不需要修改此文件中的内容,除非是想添加一些全局的项目构建配置

2)app目录下的build.gradle文件

apply plugin: 'com.android.application'		
//第一行应用了一个插件 在末端若为application,表示这是一个应用程序模块;若为library,表示这是一个库模块。				    				
//二者的区别:前者可以直接运行;后者只能作为代码库依附于别的应用程序模块来运行
android {
    
    
	    compileSdkVersion 29		//指定项目的编译版本
    buildToolsVersion "29.0.3"			//指定项目构建工具的版本
    defaultConfig {
    
    				//(本包可以对项目的更多细节进行配置)
        applicationId "com.example.helloworld1" 		//指定项目的包名
        minSdkVersion 23			//指定项目最低兼容的Android版本
        targetSdkVersion 29
        versionCode 1  				//指定项目的版本号
        versionName "1.0"				//指定项目的版本名
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
    
    			//在buildTypes包下:(本包用于指定生成安装文件的相关配置)···本包下通常会有两个子闭包:
    						//······debug闭包:指定生成测试版安装文件的配置;······release闭包:指定生成正式版安装文件的配置
        release {
    
    
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    
    			//在depend。。。闭包下:(本包可以指定当前项目所有的依赖关系,包括:本地依赖、库依赖、远程依赖)
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

1.3 日志工具的使用

  • Log.v(“Tag”,“msg”):打印最为琐碎的、意义最小的日志信息,对应级别:verbose
  • Log.d(“Tag”,“msg”):打印一些调试信息,对应级别:debug
  • Log.i(“Tag”,“msg”):打印一些比较重要的数据,对应级别:info
  • Log.w(“Tag”,“msg”):打印警告信息,对应级别:warn
  • Log.e(“Tag”,“msg”):打印程序中的错误信息,对应级别:error(其中Tag是指定的活动名的字符串变量名)
    例如:
    在这里插入图片描述
    括号内:第一个参数tag一般传入当前的类名 ;第二个参数msg为想要打印的内容在这里插入图片描述
    过滤器:
    在这里插入图片描述
  • show。。。:只显示当前选中程序的日志
  • no fil。。。:把所有日志显现出来
  • 自定义过滤器:Tag的值表示这个过滤器只显示tag名称为该值的日志在这里插入图片描述
    在这里插入图片描述
    通过选择该级别,就可以指定输出本级别及更高级别的日志

猜你喜欢

转载自blog.csdn.net/Cristiano_san/article/details/105665857