Android应用初体验

来源:互联网 发布:昆山cnc编程招聘 编辑:程序博客网 时间:2024/05/01 08:05

根据书籍进度来记录android的学习过程,第一章是一个简单的问答应用,由这个应用衍生的问题来初步了解android应用的结构。




该应用的视图由一个XML文件(activity_quiz.xml)构成,这里LinealLayout是作为根元素,但它也有父视图(View),Android提供该父视图来容纳应用的整个视图层级结构。


相关组件属性:


layout_width,layout_height几乎是所有组件里的必备属性,用来表示该组件在视图里的宽和高

属性值为:match_parent:视图与父视图大小相同

                    warp_content:视图根据内容自动调整大小

另外:fill_parent:等同于match_parent,目前已废弃不用

视图结构为:

LinealLayout(垂直、居中)

       | -----TextView(显示问题)

       | -----LinearLayout(两个按钮)

                      |----Button

                      |----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:gravity="center"    android:orientation="vertical" >        <TextView android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/question_text"        android:padding="24dp"        />       <LinearLayout android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="horizontal"              >               <Button android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@string/true_button"            android:id="@+id/true_button"            />         <Button android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@string/false_button"            android:id="@+id/false_button"            />           </LinearLayout></LinearLayout>

android:orientation属性:决定该组件的子组件是水平放置还是垂直放置,这里根LinearLayout是垂直(vertical),子LinearLayout是水平(horizontal)

android:gravity属性:相对于父组件(View)的放置位置,center_vertical是相对于垂直的中间位置存放(下图左),center_horizontal是相对于水平位置的中间位置存放(下图中),center是相对于垂直和水平的中间位置存放(下图右)

   


android:text属性:指定组件显示的相关文字内容,这里我们可以直接填写相应的文字,但为了规范,一般是通过@指向一个索引的文件里对应ID的文字内容(对字符串资源的引用)

关于字符串资源,存在于一个名为strings.xml的文件里,可以在里面定义一些字符串资源,需要用到的时候直接通过@string/XX直接引用对应的name即可。而所有资源的ID(不仅是strings.xml,还有其他相关的比如layout资源,drawabe资源都会在目录gen下面的R.JAVA文件里自动生成相对于的索引,前提是在组件相关的地方定义加入索引相关的内容,比如@+id/true_button 就是在R.java下面增加该组件对应的id索引

strings.xml------------>字符串资源的定义

R.JAVA------->对应资源里的序列ID



视图组件设置好后,需要实际应用了,这里视图因为只有一个问题,两个选择按钮,所以视图主要由一个TextView和两个Button按钮构成。

而通过XML元素转换成为视图对象,我们需要创建一个Activity类,名字是QuizActivity,该类继承Activity,并需要重写oncreat方法,然后该Activity在初始化创建时,应该讲XML视图实例化对象,这里用到

setContentView(R.layout.activiti_quiz);//这里用到引用R.JAVA里layout的对应值。注:如果项目包导入的是系统本身的android.R的话,可能找不到对应的资源,导包需要注意

而此应用是一个带选择的功能,所以两个按钮需要设置监听器,以确保用户选择后弹出对应的信息。所以我们先声明两个按钮,然后设置对应的监听器,因为android应用属于典型的事件驱动类型。

代码片段



android SDK内置了很多监听接口,因此只需要实现对应接口即可,一般使用匿名内部类,而该应用事件触发后,应该告诉用户是否选择正确,所以我们创建一个提示消息,这里用到Toast。


至此基本都做完了,但是书中的示例是在helloWord上更改的,有些细节并未列出。

这里一一指出,QuizActivity是需要进行注册的,并且由于它是唯一个Activity,应用启动后得启动一个默认的Activity,所以我们都需要配置,配置文件是AndroidManifest.xml

此文件用来注册应用的相关信息

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.geoquiz"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="16" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >                <activity android:name="com.android.activity.QuizActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN"/>                <category android:name="android.intent.category.LAUNCHER"/>            </intent-filter>        </activity>            </application></manifest>

该Activity是应用默认启动的Activity,所以配置里面指明了。
android.intent.action.MAIN    --------决定最先启动的Activity
android.intent.category.LAUNCHER    ------决定是否出现在应用程序列表里

0 0