探究活动

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>标签配置主活动,两行声明)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值