学习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属性,用来接管用户的点击动作,指定了点击按钮时要触发哪个方法。