学习android第二天
活动
活动是一种可以包含用户界面的组件,主要用于与用户进行交互。
在创建项目时选择Add No Activity,即可手动创建活动
先把项目结构从Android模式改为Project模式,
右击com.example.activities包—>New—>Activity—>Empty Activity,
不勾选Generate Layout File和Launcher Activity,
勾选Generate Layout File 表示会自动为这个活动创建一个对应的布局文件
勾选Launcher Activity 表示自动将这个活动设置为当前项目的主活动
创建和加载布局
这里先放着后面补充
布局文件中已有一个LinearLayout元素,接下来尝试添加一个按钮
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
<Button
android:id="@+id/button_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"
/>
</LinearLayout>
注意:
- android:id 是给当前元素定义一个唯一标识符
- 在XML中引用一个id:@id/id_name
- 在XML中定义一个id:@+id/id_name
- android:layout_width和android:layout_height分别指定元素的宽度和高度
- match_parent表示和父元素一样宽(高),wrap_content表示当前元素的高度刚好包含里面的内容
加载布局
可以在活动中调用setContentView()方法来给当前活动加载一个布局,
如:setContentView(R.layout.first_layout);
我们需要传入一个布局文件的id
项目中添加的任何资源都会在R文件中生成一个相应的资源id,我们只需调用R.layout.first_layout就能得到first_layout.xml布局的id
注册活动
所有活动都要在AndroidManifest.xml中进行注册才能生效
我们可以看到Android Studio自动为我们注册好了
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.activitytest">
<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.ActivityTest">
<activity android:name=".NormalActivity">
</activity>
</application>
</manifest>
- 活动注册要放在标签中
- 通过标签对活动进行注册
- android:name=".NormalActivity"中填入的活动名是对com.example.activitytest.NormalActivity的缩写
因为我们之前在标签中已经通过package属性指定了程序包名为com.example.activitytest
因此这里可以省略,直接使用.NormalActivity即可
但是启动程序时,先启动哪个活动呢?
要配置主活动,就要在标签的内部加入标签,
并在这个标签里添加 和 这两句声明
还可以使用android:label指定活动中标题栏的内容,标题栏是显示在活动最顶部的
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.activitytest">
<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.ActivityTest">
<activity android:name=".NormalActivity"
android:label="This is NormalActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
以上操作可以使点击桌面应用程序图标时首先打开的就是NormalActivity,
如果没有声明主活动,程序仍然可以正常安装,只是无法在启动器中看到和打开这个程序,
这个程序一般作为第三方服务供其他应用在内部进行调用,如支付宝快捷支付。
在活动中使用Toast
Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息在一段时间后会自动消失,并不会占用任何的屏幕空间。
界面上有一个按钮,我们可以设定让点击这个按钮时弹出一个Toast,在onCreat()方法中添加如下代码:
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button1 = (Button)findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener()){
@Override
public void onClick(View v){
Toast.makeText(NormalActivity.this,"You click button1",
Toast.LENGTH_SHORT).show();
}
});
}
- 活动中,我们可以通过 findViewById() 方法获取到在布局文件定义的元素,只需要传入 R.id.button_1 就能获取按钮实例
- findViewById() 方法返回的是一个View对象,所以我们需要向下转型将它转成Button对象
- 获取按钮实例后我们使用 setOnClickListener() 方法为按钮注册一个监听器,点击按钮时就会执行监听器中的 onClick() 方法
- 要使用 Toast 只需通过静态方法makeText() 创建出一个Toast对象,然后调用show()将Toast显示出来即可
- makeText()方法需要传入三个参数,第一个参数是Context,是Toast要求的上下文,第二个参数是Toast显示的文本内容,第三个参数是Toast显示的时长,有两个内置常量可选择 Toast.LENGTH_SHORT 和 Toast.LENGTH_LONG
在活动中使用Menu
后面补充