【安卓学习】1.活动-写第一个安卓项目

2.1 活动是什么?

        活动(Activity),包括用户界面的组件,主要用于跟用户交互。个人理解,就是展示给用户看的东西。一个程序可以有零个或多个活动(正常展示给用户的app至少有一个活动)。

2.2 Android Studio创建活动

        首先,我们打开Studio,选择创建一个新的安卓项目
        然后给自己app起个名字(Application name),以及公司名(Company name),因为我是个人开发者,所有就默认使用软件自己生成的名。(因为我之前已经创建了名为Application01的项目,因此下面会报红)。
         然后选择项目最低兼容版本,因为现在大家基本都是4.0以上了,因此选API 15。另外下面分别为:Wear(穿戴设备),TV(电视),Android Auto(汽车程序)。暂时忽略吧。
        接下来可以选择一个模板。第一次可以选择一个Empty,空的。然后finish,就可以调试运行了。现在我们感受一下创建自己的活动,因此这里选择add no activity。然后finish。
        项目创建成功后,默认的是Android模式,按照书本的教学,切换到Project模式。
        接下来,创建我们自己的活动(activity)。总共四个步骤:1.创建活动,2.创建布局,3.在活动中加载布局,4.注册活动。
  1. 创建活动
          在app/scr/main/java下面的包下,->New->Activity->Empty Activity,会弹出创建活动。我们命名为FirstActivity,注意不要勾选Generate Layout File与Launcher Activity。rate...表示会自动给我们FirstActivity创建一个布局文件,Launcher Activity会自动将当前活动(FirstActicity)设置为主活动。因为我们现在要体验文件之间关系,因此这些自动创建的就不要勾选。然后点击finish。
            这里,需要知道的一点是:项目的任何活动都需要重写OnCreate方法。Studio已经帮我们完成了:
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.first_layout);
        }
  2. 创建布局

            在app/src/main/res目录->New -> Directory,创建一个目录,取名layout。然后对着layout ->Layout resource file,弹出对话框中,将布局文件命名为first_layout,根元素默认选择LinearLayout,点击OK。

            在布局中添加一个Button:

    <?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">
    
        <Button
            android:id="@+id/button_1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Button_1"
            />
    
    </LinearLayout>


            其中,Button代表我们添加的是一个Button按钮。android:id是给这个控件指定一个唯一的标识符,之后可以在代码对这个元素进行操作。后面android:layout_width指定了button的宽度,match_parent说与父元素一样宽,android:layout_height指定了button高度,wrap_content则代表刚好能展示里面文字的高度。text则为button按钮显示的文字。

  3. 活动中加载这个布局

            接下来,需要在活动中(FirstActivity)加载这个布局:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.first_layout);
        }

             可见,只需要setContentView()方法,则可以完成。项目的任何资源文件都会在R文件中生成一个对应资源的id,因此只需要调用R.id.first_layout就可以得到布局的id,然后传入setContentView方法中。

  4. 在AndroidManifest中注册

    fffffff

        <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/AppTheme">
            <activity android:name=".FirstActivity"
                android:label="This is my first APP">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
        </application>

            其实,studio已经帮我们注册过了,我在里面又按照自己情况添加了一点代码:

            首先,设为主活动的代码(即告诉软件,启动这个项目的时候,那个活动是第一个加载的活动),<intent-filter/>中的代码完成这个功能。

            l另外,label的功能是,显示这个页面的时候,标题栏的内容,个人认为类似与浏览器的标签栏。

    至此,我们已经完成一个最简单的安卓项目了,启动运行看一下吧。

2.3 活动中使用Toast

        这个比较简单,当然也比较实用。

        首先介绍一下Toast。这是安卓系统中比较好的一种提醒方式,在系统中,以短小的信息通知给用户,而且过段时间就会消失,不占用屏幕资源。个人感觉比较使用,比如我们可以借用这个来判断点击某个按钮是否有效果,是否返回了资源等等。

用法也比较简单,类似与java的System.out.println()一样,我们在需要显示的地方敲入代码,例如:

     String resultData = data.getStringExtra("data");
     Toast.makeText(FirstActivity.this, resultData, Toast.LENGTH_SHORT).show();
主要是第二行,通过makeText静态方法创建出一个Toast对象,然后调用show方法显示出来就可以了。

makeText需要三个参数:第一个参数是Context,上下文,活动本身就是一个上下文,因此这里我直接传入FirstActivity.this。第二个参数是Toast要显示的内容。第三个参数是显示时长,有几个内置常量可以选择:Toast.LENGTH_SHORT和Toast.LENGTH_LONG。

运行结果就不粘了。

2.4 使用Menu菜单

安卓中,有一些菜单,就例如微信右上角点击"+"号之后弹出菜单类似功能。安卓本身提供了类似的功能,因此实现比较简单。
首先,我们在res目录下创建一个menu文件夹,然后可以直接创建一个菜单文件 -> Menu resource file,名字我输入main。
然后再main.xml中写入如下代码:
<?xml version="1.0" encoding="utf-8"?>
<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>
安卓中,菜单项可以用<item>标签创建,然后id中指定一个id,通过text设置这个选项的内容。
接下来我们需要去activity中重写一个方法onCreateOptionsMenu,目的是要菜单能够显示出来:
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
getMenuInflate方法可以得到MenuInfalte对象,然后调用inflate就可以创建菜单了。这里需要传入两个参数:第一个参数是告诉系统,需要通过那个资源文件夹来创建菜单;第二个参数是指定我们的菜单项添加到哪一个Menu对象当中,这里我们使用方法中传入的参数menu。然后让方法返回true,表示创建的菜单显示出来,如果返回false则不会显示出来了。
当然,菜单只显示出来还是不够的,还需要能点击,然后有对应的活动。这时需要我们重写onOptionsItemSelected()方法。
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.add_item:
                Toast.makeText(this, "Add", Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(FirstActivity.this, "Remove", Toast.LENGTH_SHORT).show();
                break;
            default:
        }
        return true;
    }
代码比较简单,通过抵用item.getItemId()方法判断我们点击的是哪个菜单,然后做出相应的动作。这里我用了之前的Toast。

2.5销毁一个活动

其实就是我们使用一般安卓应用时,点击Back键功能。如果想自己实现,则可以添加一个Button,然后添加监听事件,在点击按钮之后,执行一个方法finish(),就可以销毁当前活动了。比较简单,不贴代码了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章