0
点赞
收藏
分享

微信扫一扫

安卓教程----第一行代码学习笔记

Resin_Wu 2022-03-14 阅读 69

安卓概述

系统架构

Linux内核层,还包括各种底层驱动,如相机驱动、电源驱动等
系统运行库层,包含一些c/c++的库,如浏览器内核webkit、SQLlite、3D绘图openGL、用于java运行针对移动设备定制的dalvik、ART虚拟机等
应用框架层,包含安卓的一些api
应用层 我们写的程序在此

四大组件

活动 你看得到的都叫活动
服务 后台功能
广播接收器 接收通知
内容提供器 应用之间共享数据,如通讯录

开发环境

JDK
AndriodSDK
AndriodStudio

HelloWorld

打开andriod studio
左上角 new project
选择add empty activity(而非no activity) 名字就默认的MainActivity即可
在这里插入图片描述
包名要有唯一性,名字设置为helloworld,不勾选use lagacy选项
左上角换成project,这是项目的真实结构, 默认的andriod适合老手快速开发使用
在这里插入图片描述
在这里插入图片描述
编译、哪个app(app是当前的主项目)、用哪个设备模拟、运行

文件布局

在这里插入图片描述
正常情况 我们只需要关注app目录即可。
ps,安卓使用gradle构建

在这里插入图片描述
libs是你引入的外部jar包
src是我们自己的代码存放的地方。
andriodTest和tesr是编写测试用例的地方,目前用不到,无需关注
proguard-rules 用于定义代码的混淆规则,当我们发布不想让别人知道我们源代码的时候使用

在这里插入图片描述
main目录是我们真正写代码的地方,java就是我们写java代码的目录,res是资源文件,drable是图片,layout是布局,values是字符串,mipmapyo用来放图标的,xxxdpi的后缀是各种分辨率的。最后哪个AndriodManifest.xml用于注册各种组件,各种我们用到的东西 都要在这里声明。

MainActivity.java

系统自动帮我们生成了这些代码 我们不需要记 只要关注 onCreate里面的方法就行了

package com.example.helloworld;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

//AppCompatActivity是一种向下兼容的活动
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {  //oncreate是活动被创建的时候要调用的方法
        super.onCreate(savedInstanceState); //构造器
        //以上的代码块都是固定写法  不用管  下面是我们的代码逻辑
        setContentView(R.layout.activity_main);  //设置布局文件  安卓讲究视图分离  这个R代表res文件夹 后面的是文件路径
    }
}

activity_main.xml

在这里插入图片描述
这个是安卓的视图层,默认是图形化编辑器,我们点击code变成代码编辑模式

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

先不用管textview上面的部分,这部分都会帮我们自动生成,我们关注下面的部分即可。由于安卓很智能 当我们输入helloWorld的时候,它自动帮我们生成了一个textview 里面的text就是它的名字。

AndriodManifest.xml

打开发现下面自动生成的文件

<!-- xml版本和字符声明  -->
<?xml version="1.0" encoding="utf-8"?>
<!-- 语法命名空间 没有这句话就不能设置 android:***** 等属性 或者设置了也没效果 -->
<!-- 在使用到自定义View的xml布局文件中需要加入xmlns:前缀=http://schemas.android.com/apk/res/你的应用程序包路径.--?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.helloworld">

<!--  指定我们应用的属性、图标等 -->
    <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/Theme.HelloWorld">

		<!-- 所有我们加入安卓的activity 都要到这里注册  一般在安卓里新建活动 这里会自动生成  -->
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
            	<!-- 这两行代码代表这个activity是app的主活动 打开软件 默认打开的就是这个活动 -->
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

运行

在这里插入图片描述
选择模拟器后,自动安装运行。

升级加button 弹出toast

我们把之前视图文件中TextView的替换成这个

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Button 1" 
            />
    </LinearLayout>

我们加了歌 linerLayout ,之后会进一步介绍 这里只用记住就行了
当我们在xml中 定义一个id 的时候 用@+id/button1这种语法
当我们想要使用一个id的时候 就去掉加号用@+id/button1z这种语法
之后打开java文件,在设置视图文件的后面 加上

 ......
 setContentView(R.layout.first_layout) ;
 //找到视图层中的button
 Button button1= (Button)findViewById(R.id.button1);  //这里的id就不是文件路径了 安装会把res中的属性都虚拟化出来
 //compileSdkVersion >=26,findViewById 前的强制类型转换是多余的 所以 (Button)可以不用写了
 //设置点击监听器,当被点击的时候 执行被点击的方法  由于java一切都是对象 不能只传入一个函数 所有要传入一个匿名内部类
 button1.setOnClickListener(new View.OnClickListener(){  //注意这里的On的O是大写== 因为这是一个接口
 	@Override
 	public void onClick(View v){
 		//第一个参数是Context 上下文 
 		Toast.makeText(MainActivity.this, "Hello World", Toast.LENGTH_SHORT).show();//活动本身就是一个Context
 		}
 	});
 }

事实上,可以用Lambda表达式 简写

        button1.setOnClickListener(v -> {
            //第一个参数是Context 上下文
            Toast.makeText(MainActivity.this, "Hello World!", Toast.LENGTH_SHORT).show();//活动本身就是一个Context
        });

自动导入包

发现报错无法运行 说找不到Button 这是因为我们没有import Button toast的包
在这里插入图片描述
可以设置 自动导入

日志打印和gradle构建

用log 而非java的 syso 更方便 而且有快捷键
详细看书

举报

相关推荐

0 条评论