学习Android-2024-08

学习Android-2024-08-01

今天内容没有具体在程序中验证,可能存在问题。明天验证。

1.打印日志

1.1共5个级别,Log.e、Log.w、Log.i、Log.d、Log.v,重要性依次降低。例如Log.v会看到前面Log.e、Log.w等所有的信息。而Log.e只会看到Log.e的信息。

1.2输出时打的tag,利于在控制台进行搜索。

// 错误信息,第一个参数是tag名,即标记名。
Log.e("errorTag", "error occured");
// 警告信息
Log.w("warnTag", "warn occured");
// 一般信息
Log.i("infoTag", "sample info to show");
// 调试信息
Log.d("debugTag", "onCreate() method run.");
// 冗余信息
Log.v("notImportantTag", "not important message to show");

学习Android-2024-08-02

1.Android studio创建新的empty项目后,模拟器运行,控制台报错如下:

Build file 'D:\study\android\AndroidStudioProjects\HelloWorld\app\build.gradle' line: 2

An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
     You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

分析:Android stuido正在尝试用jdk8来运行Android Gradle插件,但该插件需要jdk11或更高版本来运行。

解决方法:(因为电脑之前已经装了jdk11),通过file/project structure菜单,SDK Location选项卡,设置gradle setting,在弹窗内选择gradle jdk为已安装的jdk11。

设置完成后,项目可以正常运行了。

学习Android-2024-08-03

1.Android stuido验证日志输出,以及控制台选择低重要性的输出过滤(如verbose),可以过滤出更重要的输出(例如error、warn、info、debug):

verbose /vɜːˈbəʊs/ 啰嗦的;冗长的,累赘的

Log.e("errorTag", "errorTag");
        Log.w("warnTag", "warnTag");
        Log.i("infoTag", "infoTag");
        Log.d("debugTag", "debugTag");
        // verbose /vɜːˈbəʊs/ 啰嗦的;冗长的,累赘的
        Log.v("errorTag", "errorTag");

学习Android-2024-08-04

1.Android工程目录结构

1.1Android工程分为两个层次,第一个层次是项目,另一个层次是模块。

1.2模块依附于项目,每个项目至少有一个模块,也能拥有多个模块。

1.3一般所言的“编译运行app”,指的是运行某个模块,而非运行某个项目,因为模块才对应实际的app。

2.app项目下面有两个分类:app(代表app模块)、gradle scripts。切换到Android视图可以看清楚。

 

3.gradle:gradle是一个项目自动化构建工具,帮我们做了依赖、打包、部署、发布、各种渠道的差异管理等工作。

学习Android-2024-08-05

1.编译配置文件build.gradle

plugins {
    id 'com.android.application'
}

android {
    // 指定编译用的版本号;34 表示使用Android 14编译
    compileSdk 34

    defaultConfig {
        // 指定该模块的应用编号,即app的包名,要与清单文件AndroidManifest.xml里的package保持一致
        applicationId "com.example.helloworld"
        // app适合运行的最小SDK版本号;28表示至少要在Android 9上运行
        minSdk 28
        // 指定目标设备的sdk版本号,表示app最希望在哪个版本的Android上运行
        targetSdk 34
        // 指定app的应用版本号;唯一标识,必须是整数
        versionCode 1
        // 指定app的应用版本名称
        versionName "1.0"

        // 单元测试
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            // 混淆
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    // appcompat是一个兼容的库,官方已经帮忙做好了适配和兼容性解决方案
    // import androidx.appcompat.app.AppCompatActivity;
    // public class MainActicity extends AppCompatActivity {}
    implementation 'androidx.appcompat:appcompat:1.3.0'
}

学习Android-2024-08-06

1.清单文件AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- AndroidManifest.xml 清单文件 -->
<!-- package包名,应用的唯一标识 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.helloworld">

<!--    android:allowBackup:是否允许应用备份
        android:icon:应用在桌面显示的图标
        android:label:应用在桌面显示的名称
        android:roundIcon:应用的圆角图标
        android:supportsRtl:是否支持阿拉伯语等从右往左排列的语言
        android:theme:指定应用的风格 -->
    <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:屏幕组件 -->
        <!-- intent-filter指定了打开应用时首先看到哪个Activity:MainActivity -->
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

学习Android-2024-08-07

1.界面显示与逻辑处理

布局文件activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- 定义根节点LinearLayout线性布局 -->
<!-- xmlns:android="http://schemas.android.com/apk/res/android" 定义命名空间 -->
<!-- match_parent:填充父容器-->
<!-- android:orientation指定方向;vertical垂直方向(默认的);horizontal水平方向 -->
<!-- android:gravity="center"居中 -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <!-- wrap_content:包裹内容,有多少文字,就有多少宽高,量力而行-->
    <!-- android:id="@+id/tv":id是唯一标识-->
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello world!"/>
</LinearLayout>

逻辑处理MainActivity.java:

package com.example.helloworld;

// ctrl+alt+o,自动组织导入
import android.os.Bundle;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView设置使用哪个布局
        // R是gradle自动生成的,gradle提供的辅助类
        setContentView(R.layout.activity_main);
        TextView tv = findViewById(R.id.tv);
        tv.setText("你好,世界!");
    }
}

学习Android-2024-08-08

1.activity创建与跳转

1.1在layout目录下创建xml文件(布局文件)

1.2创建对应的java代码

1.3在配置清单AndroidManifest.xml中注册页面配置(一定要有这步,已验证没这步的话是无法跳转的)

布局文件activity_main2.xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- 创建一个页面分为3步 -->
<!-- 1.在layout目录下创建xml文件(布局文件) -->
<!-- 2.创建对应的java代码 -->
<!-- 3.在配置清单AndroidManifest.xml中注册页面配置(一定要有这步,已验证没这步的话是无法跳转的) -->
<!-- 右击layout文件夹,new/xml/layout xml file -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">
    <TextView
        android:id="@+id/tv_in_activity_main2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/activity_main2_name"/>
</LinearLayout>

常量定义string.xml:

<resources>
    <string name="app_name">HelloWorld</string>
    <string name="activity_main2_name">Activity Main2</string>
    <string name="btn_jump_activity_main2_name">跳转</string>
</resources>

主acitivity布局:

<?xml version="1.0" encoding="utf-8"?>
<!-- 定义根节点LinearLayout线性布局 -->
<!-- xmlns:android="http://schemas.android.com/apk/res/android" 定义命名空间 -->
<!-- match_parent:填充父容器-->
<!-- android:orientation指定方向;vertical垂直方向(默认的);horizontal水平方向 -->
<!-- android:gravity="center"居中 -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <!-- wrap_content:包裹内容,有多少文字,就有多少宽高,量力而行-->
    <!-- android:id="@+id/tv":id是唯一标识-->
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello world!"/>

    <Button
        android:id="@+id/btn_jump_activity_main2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_jump_activity_main2_name"/>
</LinearLayout>

activity_main2布局对应的java代码:MainActivity2.java:

package com.example.helloworld;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

/**
 * 继承AppCompatActivity,AppCompatActivity解决兼容性问题
 */
public class MainActivity2 extends AppCompatActivity {
    /**
     * onCreate方法有两个,这里要实现单参数的onCreate方法
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView设置使用哪个布局
        setContentView(R.layout.activity_main2);
    }
}

主activity的java代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView设置使用哪个布局
        // R是gradle自动生成的,gradle提供的辅助类
        setContentView(R.layout.activity_main);
        TextView tv = findViewById(R.id.tv);
        tv.setText("你好,世界!");

        // findViewById的参数是R.id.xxx,而不是我一开始写的直接findViewById("xxx")
        Button btnJump = findViewById(R.id.btn_jump_activity_main2);
        // new View.OnClickListener() {} 匿名内部类
        // 当按钮被点击后(即btnJump被点击后),执行onClick这个回调方法
        btnJump.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建意图
                Intent intent = new Intent();
                // intent.setClass()第一个参数是content上下文
                // MainActivity等等,每个activity都是上下文
                // 不能直接用this,因为这里this指的是OnClickListener
                intent.setClass(MainActivity.this, MainActivity2.class);
                startActivity(intent);
            }
        });
    }
}

配置清单AndroidMainfest.xml:

<activity android:name=".MainActivity2"/>

<?xml version="1.0" encoding="utf-8"?>
<!-- AndroidManifest.xml 清单文件 -->
<!-- package包名,应用的唯一标识 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.helloworld">

<!--    android:allowBackup:是否允许应用备份
        android:icon:应用在桌面显示的图标
        android:label:应用在桌面显示的名称
        android:roundIcon:应用的圆角图标
        android:supportsRtl:是否支持阿拉伯语等从右往左排列的语言
        android:theme:指定应用的风格 -->
    <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:屏幕组件 -->
        <!-- intent-filter指定了打开应用时首先看到哪个Activity:MainActivity -->
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- 不是主activity,无需配置意图intent-filter -->
        <activity android:name=".MainActivity2"/>
    </application>

</manifest>

学习Android-2024-08-09

1.设置文本内容:

直接在布局中text设置,或java代码中设置

1.1创建模块chapter03

1.2布局文件activity_text_view.xml:、

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">
    <!-- 一开始我写的android:id="@+id/practice-text-view",as里标红,说明id中不允许- -->
    <TextView
        android:id="@+id/practice_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/greeting_word_name"/>
</LinearLayout>

1.3常量string.xml

<resources>
    <string name="app_name">chapter03</string>
    <string name="greeting_word_name">你好,世界(位于activity_text_view中)</string>
</resources>

1.4java代码TextViewActivity.java里:设置界面,然后设置TextView的文本:

public class TextViewActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text_view);
        // 设置文本内容:直接在布局中text设置,或java代码中设置
        TextView practiceTextView = findViewById(R.id.practice_text_view);
        practiceTextView.setText("好好学习,天天向上");
    }
}

1.5主界面给个跳转按钮:activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">
    <TextView
        android:id="@+id/main_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="主界面"/>
    <Button
        android:id="@+id/btn_jump"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转"/>
</LinearLayout>

1.6主界面对应的java代码:MainActivity.java里设置主界面、设置按钮监听(然后通过意图跳转TextViewActivity)

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btnJump = findViewById(R.id.btn_jump);
        btnJump.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, TextViewActivity.class);
                startActivity(intent);
            }
        });
    }
}

1.7在配置清单AndroidManifest.xml中配置activity:

<activity android:name=".TextViewActivity"/>

学习Android-2024-08-10

1.设置文本大小的两种方式:(1)直接在布局xml里android:textSize="60px"来设置;(2)在java代码里.setTextSize()来设置,.setTextSize(float size);单位是sp

布局activity_text_size.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">
    <TextView
        android:id="@+id/tv_default_text_size"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/word_test_set_text_size_name"/>
    <TextView
        android:id="@+id/tv_set_text_size_by_xml"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/word_test_set_text_size_name"
        android:textSize="60px"/>
    <TextView
        android:id="@+id/tv_set_text_size_by_java"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/word_test_set_text_size_name"/>
</LinearLayout>

activity:TextSizeActivity.java:

public class TextSizeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text_size);
        TextView tv1 = findViewById(R.id.tv_set_text_size_by_java);
        // java代码.setTextSize(float size);单位是sp
        tv1.setTextSize(60);
    }
}

为便于测试,直接在配置清单中将TextSizeActivity设置为主activity:AndroidManifest.xml:

<activity
            android:name=".TextSizeActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

学习Android-2024-08-11

1.设置文本颜色的两种方式:(1)直接在布局xml里android:textColor=""来设置;内容是#加rgb(2)在java代码里.setTextColor()来设置

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">
    <TextView
        android:id="@+id/tv_set_color_by_xml"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="通过xml设置字体颜色"
        android:textColor="#00ff00"/>
    <TextView
        android:id="@+id/tv_set_color_by_java"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="通过java代码设置字体颜色"/>
</LinearLayout>

TextColorActivity.java:

public class TextColorActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text_color);
        TextView tvSetColorByJava = findViewById(R.id.tv_set_color_by_java);
        tvSetColorByJava.setTextColor(Color.GREEN);
    }
}

学习Android-2024-08-12

1.通过xml设置视图的宽高:

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="xml中通过wrap_content设置宽高"
        android:textColor="#000000"
        android:background="#00ffff"
        android:textSize="17sp"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="xml中通过match_parent设置宽度"
        android:textColor="#000000"
        android:background="#00ffff"
        android:textSize="17sp"/>
    <TextView
        android:layout_width="300dp"
        android:layout_height="400dp"
        android:layout_marginTop="5dp"
        android:text="xml中设置宽高固定值"
        android:textColor="#000000"
        android:background="#00ffff"
        android:textSize="17sp"/>
</LinearLayout>

学习Android-2024-08-13

1.设置视图的间距:layout_margin、padding:

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:orientation="vertical"
    android:background="#00FFFF">
    <!-- layout_margin设置与同级的距离 -->
    <!-- padding设置内边距 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#FFC107"
        android:layout_margin="20dp"
        android:padding="60dp">
        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:background="#FF0000">
        </View>
    </LinearLayout>
</LinearLayout>

学习Android-2024-08-14

1.发现了之前的错误:指定布局方向时:水平布局是horizontal,zon,拼写要正确。我之前一直拼错了。

2.设置视图的对齐方式:

layout_gravity属性:设置当前视图相对于上级视图的对齐方式

gravity属性:设置下级视图相对于当前视图的对齐方式

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- 备注:android:orientation="horizontal"设置排列方式为水平,
水平布局是horizontal,tal,拼写要正确。我之前一直拼错了 -->
<!-- 然后内部两个红色LinearLayout布局,设置layout_width="0dp",
 并且权重layout_weight="1",就实现了类似于水平方向上的自适应。-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:orientation="horizontal"
    android:background="#FFC107">
    <!-- 设置视图对齐方式 -->
    <!-- layout_gravity属性:设置当前视图相对于上级视图的对齐方式 -->
    <!-- gravity属性:设置下级视图相对于当前视图的对齐方式 -->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="190dp"
        android:layout_margin="10dp"
        android:layout_weight="1"
        android:background="#ff0000"
        android:orientation="vertical"
        android:padding="10dp"
        android:layout_gravity="bottom"
        android:gravity="left">
        <View
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:orientation="vertical"
            android:background="#00ffff">
        </View>
    </LinearLayout>
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="190dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:background="#ff0000"
        android:layout_margin="10dp"
        android:padding="10dp"
        android:layout_gravity="top"
        android:gravity="right">
        <View
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:orientation="vertical"
            android:background="#00ffff">
        </View>
    </LinearLayout>
</LinearLayout>

学习Android-2024-08-15

1.线性布局LinearLayout:

1.1orientation:设置其下级视图对齐方式:

1.1.1orientation="vertical",设置其下级视图竖直排列。

1.1.2orientation="horizontal",设置其下级视图水平排列。

1.2layout_weight:设置权重。注意是在子级视图上设置0dp和权重。

1.2.1当设置两个子视图layout_width="0dp"时,layout_weight就是设置两子视图在水平方向上的权重。

1.2.2当设置两个子视图layout_height="0dp"时,layout_weight就是设置两子视图在竖直方向上的权重。

<?xml version="1.0" encoding="utf-8"?>
<!-- orientation="vertical",设置其下级视图竖直排列-->
<!-- orientation="horizontal",设置其下级视图水平排列-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="600dp"
    android:orientation="vertical"
    android:background="#FFEB3B">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="#00BCD4">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="横排第一个"
            android:textColor="#000000"
            android:background="#F44336"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="横排第二个"
            android:textColor="#000000"
            android:background="#9C27B0"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:orientation="vertical"
        android:background="#8BC34A">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="竖排第一个"
            android:textColor="#000000"
            android:background="#3F51B5"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="竖排第二个"
            android:textColor="#000000"
            android:background="#2196F3"/>
    </LinearLayout>

    <!--layout_weight:设置权重。注意是在子级视图上设置0dp和权重
    当设置两个子视图layout_width="0dp"时,layout_weight就是设置两子视图在水平方向上的权重。
    当设置两个子视图layout_height="0dp"时,layout_weight就是设置两子视图在竖直方向上的权重。-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="#2196F3">
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:text="验证权重-横A"
            android:textColor="#000000"
            android:background="#009688"/>
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="验证权重-横B"
            android:textColor="#000000"
            android:background="#ff0000"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:orientation="vertical"
        android:background="#03A9F4">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:text="验证权重-竖C"
            android:textColor="#000000"
            android:background="#673AB7"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="验证权重-竖D"
            android:textColor="#000000"
            android:background="#E91E63"/>
    </LinearLayout>
</LinearLayout>

学习Android-2024-08-16

1.相对布局RelativeLayout:

<?xml version="1.0" encoding="utf-8"?>
<!--RelativeLayout相对布局-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:background="#00BCD4">

    <!-- 默认相对布局的下级视图,会显示在(父级)相对布局的左上角 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:text="我在默认位置"
        android:textColor="#000000" />

    <!-- centerInParent="true":水平竖直方向上都居中 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="#ffffff"
        android:text="我在布局中心(水平竖直都居中)"
        android:textColor="#000000" />

    <!-- centerHorizontal="true":水平方向上居中 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:background="#ffffff"
        android:text="我在水平中心"
        android:textColor="#000000" />

    <!-- centerVertical="true":竖直方向上居中 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:background="#ffffff"
        android:text="我在竖直中心"
        android:textColor="#000000" />
</RelativeLayout>

学习Android-2024-08-17

1.相对布局RelativeLayout:设置跟上级 上下左右 对齐:

<?xml version="1.0" encoding="utf-8"?>
<!--RelativeLayout相对布局-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:background="#00BCD4">

    <!-- layout_alignParentLeft="true":跟上级左边对齐 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:background="#ffffff"
        android:text="我跟上级左边对齐"
        android:textColor="#000000" />

    <!-- layout_alignParentRight="true":跟上级右边对齐 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="#ffffff"
        android:text="我跟上级右边对齐"
        android:textColor="#000000" />

    <!-- layout_alignParentTop="true":跟上级上边对齐 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:background="#ffffff"
        android:text="我跟上级上边对齐"
        android:textColor="#000000" />

    <!-- layout_alignParentBottom="true":跟上级下边对齐 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#ffffff"
        android:text="我跟上级下边对齐"
        android:textColor="#000000" />

</RelativeLayout>

学习Android-2024-08-18

1.相对布局RelativeLayout:设置在指定布局的上 下 左 右 哪个位置:

<?xml version="1.0" encoding="utf-8"?>
<!--RelativeLayout相对布局-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:background="#00BCD4">

    <!-- centerHorizontal="true":水平方向上居中 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:background="#ffffff"
        android:text="我在水平中心"
        android:textColor="#000000" />

    <!-- 在指定布局的上 下 左 右 哪个位置: -->

    <!-- android:layout_toLeftOf="@id/tv_center":在tv_center的左边
            因为是已有的布局,不是新建的,所以是@id,而不是@+id-->
    <!-- android:layout_alignTop="@id/tv_center":与tv_center的顶部对齐
            因为是已有的布局,不是新建的,所以是@id,而不是@+id-->
    <TextView
        android:id="@+id/tv_left_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/tv_center"
        android:layout_alignTop="@id/tv_center"
        android:background="#ffffff"
        android:text="我在中间左边"
        android:textColor="#000000" />

    <!-- android:layout_toRightOf="@id/tv_center":在tv_center的右边
            因为是已有的布局,不是新建的,所以是@id,而不是@+id-->
    <!-- android:layout_alignBottom="@id/tv_center":与tv_center的底部对齐
            因为是已有的布局,不是新建的,所以是@id,而不是@+id-->
    <TextView
        android:id="@+id/tv_right_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/tv_center"
        android:layout_alignBottom="@id/tv_center"
        android:background="#ffffff"
        android:text="我在中间右边"
        android:textColor="#000000" />

    <!-- android:layout_above="@id/tv_center":在tv_center的上边
            因为是已有的布局,不是新建的,所以是@id,而不是@+id-->
    <!-- android:layout_alignLeft="@id/tv_center":与tv_center的左边对齐
            因为是已有的布局,不是新建的,所以是@id,而不是@+id-->
    <TextView
        android:id="@+id/tv_above_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/tv_center"
        android:layout_alignLeft="@id/tv_center"
        android:background="#ffffff"
        android:text="我在中间上边"
        android:textColor="#000000" />

    <!-- android:layout_below="@id/tv_center":在tv_center的下边
            因为是已有的布局,不是新建的,所以是@id,而不是@+id-->
    <!-- android:layout_alignRight="@id/tv_center":与tv_center的右边对齐
            因为是已有的布局,不是新建的,所以是@id,而不是@+id-->
    <TextView
        android:id="@+id/tv_below_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_center"
        android:layout_alignRight="@id/tv_center"
        android:background="#ffffff"
        android:text="我在中间下边"
        android:textColor="#000000" />

</RelativeLayout>

学习Android-2024-08-19~2024-08-20

1.GridLayout:网格布局。

1.1默认从左到右、从上到下排列。columnCount:设置列数。rowCount:设置行数

1.2想让TextView里文字都居中,通过gravity来实现。gravity:设置下级视图相对于当前视图的对齐方式。即,TextView里的文字,是TextView的下级视图。

1.3想让每行3个TextView平分一行,去掉右侧空白,通过权重来实现。这里是表格,设置宽为0dp同时设置layout_columnWeight来实现。

<?xml version="1.0" encoding="utf-8"?>
<!-- GridLayout:网格布局
默认从左到右、从上到下 排列
columnCount:设置列数
rowCount:设置行数
-->
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="3"
    android:rowCount="2">
    <!-- 想让TextView里文字都居中,通过gravity来实现。
    gravity:设置下级视图相对于当前视图的对齐方式。
    即,TextView里的文字,是TextView的下级视图。 -->
    <!-- 想让每行3个TextView平分一行,去掉右侧空白,
    通过权重来实现。这里是表格,
    设置宽为0dp同时设置layout_columnWeight来实现 -->
    <TextView
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:layout_height="150px"
        android:background="#ff0000"
        android:text="红色"
        android:textColor="#000000"
        android:textSize="17sp"
        android:gravity="center"/>
    <TextView
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:layout_height="150px"
        android:background="#00ff00"
        android:text="绿色"
        android:textColor="#000000"
        android:textSize="17sp"
        android:gravity="center"/>
    <TextView
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:layout_height="150px"
        android:background="#0000ff"
        android:text="蓝色"
        android:textColor="#000000"
        android:textSize="17sp"
        android:gravity="center"/>
    <TextView
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:layout_height="150px"
        android:background="#FF9800"
        android:text="类似橙色"
        android:textColor="#000000"
        android:textSize="17sp"
        android:gravity="center"/>
    <TextView
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:layout_height="150px"
        android:background="#9C27B0"
        android:text="类似紫色"
        android:textColor="#000000"
        android:textSize="17sp"
        android:gravity="center"/>
    <TextView
        android:layout_width="0dp"
        android:layout_columnWeight="1"
        android:layout_height="150px"
        android:background="#FFEB3B"
        android:text="类似黄色"
        android:textColor="#000000"
        android:textSize="17sp"
        android:gravity="center"/>
</GridLayout>

学习Android-2024-08-21

1.ScrollView:竖直方向上的滚动视图。HorizontalScrollView:水平方向上的滚动视图。

2.注意:水平方向上滚动视图不能用ScrollView。

3.HorizontalScrollView设置layout_width="wrap_content",然后让其内容宽度超出屏幕,来验证滚动。 HorizontalScrollView相当于已有方向,所以无需设置排列方向android:orientation。

4.ScrollView设置layout_height="wrap_content",然后让其内容高度超出屏幕,来验证滚动。ScrollView相当于已有方向,所以无需设置android:orientation

<?xml version="1.0" encoding="utf-8"?>
<!-- ScrollView:竖直方向上的滚动视图
HorizontalScrollView:水平方向上的滚动视图
注意:水平方向上滚动视图不能用ScrollView-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <!-- 注意:水平方向上滚动视图不能用ScrollView。我一开始用的ScrollView,无法实现水平方向的滚动。 -->
    <!-- HorizontalScrollView设置layout_width="wrap_content",然后让其内容宽度超出屏幕,来验证滚动 -->
    <!-- HorizontalScrollView相当于已有方向,所以无需设置排列方向android:orientation -->
    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="150dp">
        <!-- 水平方向的线性布局 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">
            <TextView
                android:layout_width="300dp"
                android:layout_height="match_parent"
                android:background="#FF0000"/>
            <TextView
                android:layout_width="300dp"
                android:layout_height="match_parent"
                android:background="#00FF00"/>
        </LinearLayout>
    </HorizontalScrollView>
    <!-- scrollView设置layout_height="wrap_content",然后让其内容高度超出屏幕,来验证滚动 -->
    <!-- ScrollView相当于已有方向,所以无需设置android:orientation -->
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <!-- 竖直方向的线性布局 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <TextView
                android:layout_width="match_parent"
                android:layout_height="500dp"
                android:background="#0000FF"/>
            <TextView
                android:layout_width="match_parent"
                android:layout_height="500dp"
                android:background="#FFC107"/>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

学习Android-2024-08-21~2024-08-22

1.Button按钮

1.1Button继承自TextView。

1.2Button按钮里文字默认是居中对齐,而TextView里默认左对齐。按钮里默认会将文字里的英文字母全转成大写

1.3android:textAllCaps 对Button设置是否将英文字母全转为大写字母。

1.3.1android:textAllCaps="true",将英文字母全转为大写字母(这也是Button默认的设置)

1.3.2android:textAllCaps="false",不将英文字母全转为大写字母

<?xml version="1.0" encoding="utf-8"?>
<!-- Button继承自TextView
按钮里文字默认是居中对齐,而TextView里默认左对齐
按钮里默认会将文字里的英文字母全转成大写-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="该TextView下方的Button按钮默认会将英文字母全转成大写"
        android:textColor="@color/black"
        android:textSize="17sp"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World"
        android:textColor="@color/teal_200"
        android:textSize="17sp"/>
    <!-- android:gravity="center"设置布局的对齐方式为居中 -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="该TextView下方的Button按钮默认会将英文字母全转成大写"
        android:textColor="@color/black"
        android:textSize="17sp"
        android:gravity="center"/>
    <!-- android:textAllCaps 对Button设置是否将英文字母全转为大写字母
    android:textAllCaps="true",将英文字母全转为大写字母(这也是Button默认的设置)
    android:textAllCaps="false",不将英文字母全转为大写字母 -->
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World"
        android:textColor="@color/teal_200"
        android:textSize="17sp"
        android:textAllCaps="false"/>
</LinearLayout>

学习Android-2024-08-30

1.Button的onClick属性,用来接管用户的点击动作,指定了点击按钮时要触发哪个方法。

posted on 2024-08-02 12:31  平凡力量  阅读(8)  评论(0编辑  收藏  举报