0.新建一个活动
新建Android项目ActivityText—>版本设置—>选择模板Add No Activity—>finish
右击com.example.activitytest—>new—>Acyivity—>Empty Activity—>命名活动为FirstActivity(不勾选Generate Layout File和Launcher Activity)
任何活动都应重写onCreate()方法,目前的FirstActivity中已经由Android Studio自动完成。代码如下:
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
1.创建和加载布局
Android程序设计讲究逻辑与视图分离,最好一个活动对应一个布局,布局就是用来显示界面内容的
右击app/src/main/res→New→Directory→新建名为layout的目录→右击layout目录→New→Layout resource file→新建布局资源文件first_layout。
然后就可以看到布局编辑器,左下角有两个切换卡,Design可以预览当前布局,还可以通过拖放的方式编辑布局,Text是通过XML文件的方式来编辑布局
点一哈Text切换卡,可以看到如下代码,因为刚才创建布局资源文件的时候选择了LinearLayout作为根元素,所以现在布局文件里已经有一个LinearLayout元素了。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</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>
布局编写完了就要在活动中加载这个布局
回到FirstActivity,在onCreate()方法中加入如下代码:
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);//调用setContentView()方法给当前活动加载布局,一般在该方法中传入一个布局文件的id
}
}
2.在AndroidManifest文件中注册
所有活动都要在AndroidManifest文件中注册才能生效,而实际上FirstActivity已经自动注册了,打开app/src/main/AndroidManifest.xml看一哈
<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:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".FirstActivity"
android:label="This is FirstActivity">//指定具体注册哪一活动
</activity>//通过这个标签来注册
</application>
</manifest>
但是!!!仅仅是这样注册,程序是不能运行的,因为没为程序配置主活动,所以现在来搞一哈,代码如下:
<activity android:name=".FirstActivity"
android:label="This is FirstActivity">//指定活动中标题栏内容,还会成为启动器中程序显示的名称
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>//在这个标签里加上这两句声明就可以为程序配置主活动了
</activity>
OK啦,跑一哈
3.在活动中使用Toast
Toast是一种提醒方式,可以将一些短小的消息通知给用户,过一会就会消失,不会占用任何屏幕空间,现在来搞一个。
先定义一个弹出Toast的触发点,正好有个按钮,那就在点击按钮的时候弹出Toast吧
在onCreate()方法中添加如下代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button1 = (Button) findViewById(R.id.button_1);//通过findViewById()方法获取布局文件里定义的元素,传入按钮的id来得到按钮实例
button1.setOnClickListener(new View.OnClickListener() {//调用setOnClickListener()方法为按钮注册一个监听器,点击按钮就会执行监听器里的onClick()方法
@Override
public void onClick(View view) {
Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show();//通过静态方法makeText()创建一个Toast对象,调用show()将Toast显示出来
}
});
}
注:findViewById()方法返回的是一个view对象,需向下转型将它转成Button对象
makeText()方法需传入3个参数,第一个是Context,也就是Toast要求的上下文,由于活动本身就是Context对象,这里直接 传入FirstActivity.this就行。第二个是Toast显示的文本内容,第三个是Toast显示的时长。
跑一哈
4.在活动中使用Menu
就是搞个菜单
右击res→New→Directory→新建menu文件夹→右击menu→New→Menu resource file→输入文件名main→创建
在main.xml中添加如下代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item//用这个标签来创建菜单
android:id="@+id/add_item"//给菜单指定唯一标识符
android:title="Add"/>//给菜单指定名称
<item
android:id="@+id/remove_item"
android:title="Remove"/>
</menu>
然后回到FirstActivity中重写onCreateOptionsMenu()方法,快捷键Ctrl+o,然后在onCreateOptionsMenu()方法中编写如下代码
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);//通过getMenuInflater()方法可以得到MenuInflate对象,调用inflate()方法给当前活动创建菜单
return true;
}
注:inflater()方法需传入两个参数,第一个参数用于指定通过哪个资源文件来创建菜单,第二个参数用于指定菜单将添加哪个 menu对象中
然后定义菜单响应事件,在FirstActivity中重写onOptionsItemSelectcted() 方法:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){//通过item.getItemId()判断点击哪个菜单项
case R.id.add_item:
Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
break;//给菜单项加入逻辑处理
case R.id.remove_item:
Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
跑一哈
5.小结
搞一个界面的步骤
创建活动→创建和加载布局→注册活动(用<intent-filter>标签配置主活动,两行声明)