样例GeoQuiz应用开发 第1章

1.  Activity是Android SDK的Activity类的一个具体实例,负责管理用户和信息屏的交互。应用的功能是通过编写一个Activity子类来实现的。简单的可能只有一个子类,复杂的应用则会有多个。

2.  布局定义了一系列用户界面对象以及它们显示在显示屏上的位置。组成布局的定义保存在XML文件当中。每个定义用来创建屏幕当中的一个对象如按钮或者文本对象。

   首先实现一个简单的页面,效果图如图:

   

代码实现:

activity_main.xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="24dp"
        android:text="@string/question_text"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/true_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/true_button"/>
        <Button
            android:id="@+id/false_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/false_button"/>
    </LinearLayout>
</LinearLayout>

MainActivity.java代码 :

package com.example.a83856.myapplication1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private Button mTrueButton;
    private Button mFalseButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTrueButton=(Button)findViewById(R.id.true_button);
        mTrueButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,R.string.incorrect_toast,Toast.LENGTH_SHORT).show();
            }
        });

        mFalseButton=(Button)findViewById(R.id.false_button);
        mFalseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,R.string.correct_toast,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

strings.xml代码:

<resources>
    <string name="app_name">My Application1</string>
    <string name="question_text">Constantinople is the largest city in Turkey</string>
    <string name="true_button">TRUE</string>
    <string name="false_button">FALSE</string>
    <string name="correct_toast">Correct!</string>
    <string name="incorrect_toast">Incorrect!</string>
</resources>

 

思考以及一些概念的解释:

1. 有哪些布局,什么时候用什么布局?

  这里面使用的是LinearLayout组件,其他的还包括FrameLayout,TableLayout,RelativeLayout。

2. 配置组件的一些常用属性:

  1. android:layout_width和android:layout_height属性。它们有常见的两个属性match_parent(视图和父视图大小相同)和wrap_content(视图根据其展示的内容自动调整大小)。

    其中LinearLayout组件的高度和宽度都是match_parent,是因为虽然它为根元素,但是它也有父视图View。其他的可以根据你的实际需要去使用。

  2. android:padding="24dp" 该属性告诉组件在决定大小的时候除了要根据内容本身之外还要增加额定的指定量的空间,使整体变得更加美观。

  3. android:orientation属性,它决定子组件是水平放置还是垂直放置。

  4. TextView和Button组件有android:text属性,它指定组件要显示的文字内容。(注意:它的属性值不是字符串值,而是对字符串资源的使用)

3. 从布局XMl到视图对象

  Java类文件包括一个Activity方法:OnCreate(Bundle)。也就是我们看到的super.OnCreate(savedInstanceState)。activity子类的实例创建之后,该方法会被调用。并且activity创建之后,它需要获取并管理自己的用户界面。获取之后调用setsetContentView(R.layout.activity_main)方法,根据传入的布局资源ID参数,该方法生成指定布局的视图并将其放置到屏幕上。

4. 理解资源(包含字符串资源)和资源ID

  布局是一种资源,资源是一种应用非代码形式的内容,比方说图像文件,音频文件,以及XML文件等。Android应用在编译时,自动生成一个R资源类,R资源类包含了所有资源文件的引用。资源ID就是方便我们去引用这个资源。Android为整个布局文件以及各个字符串生成资源ID,但是activity_main布局文件中的组件除外,因为不是所有的组件都需要资源ID,所以你在需要的时候就需要自己去创建一个资源ID。也就是我们看到的android:id=“@+id/***”。有了资源ID,我们在java写代码的时候就能很方便的使用了。

5. 引用组件

  在activity中,可以通过findViewBy(int id)方法引用该组件,该方法,以组件的资源ID作为从参数,返回一个视图对象。

6. 设置监听器。

  Java里面有,就不多说了。

7. toast:Android系统中一种消息框类型。

  当视图显示给用户,在应用程序中显示为浮动。和Dialog不一样的是,它永远不会获得焦点,无法被点击。Toast类的思想就是尽可能不引人注意,同时还向用户显示信息,希望他们看到。而且Toast显示的时间有限,Toast会根据用户设置的显示时间后自动消失。

  调用方法:Toast.makeText(Context context,int resId,int duration)。Context参数通常是一个Activity的一个实例,第二个参数时toast要显示的字符串消息的资源ID,第三个用来指定toast消息显示的持续时间。

posted @ 2018-11-19 10:58  从让帝到the_rang  阅读(238)  评论(0编辑  收藏  举报