2017-2018-2 20165318 實驗四《Android程序設計》實驗報告


2017-2018-2 20165318 實驗四《Android程序設計》實驗報告

一、實驗報告封面

課程:Java程序設計        班級:1653班        姓名:孫曉暄        學號:20165318

指導教師:婁嘉鵬                              實驗日期:2018年5月14日

實驗時間:13:45 - 3:25                    實驗序號:實驗四

實驗名稱:Android程序設計

實驗要求

  1. 沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程
  2. 完成實驗、撰寫實驗報告,實驗報告以博客方式發表在博客園,注意實驗報告重點是運行結果,遇到的問題(工具查找,安裝,使用,程序的編輯,調試,運行等)、解決辦法(空洞的方法如“查網絡”、“問同學”、“看書”等一律得0分)以及分析(從中可以得到什么啟示,有什么收獲,教訓等)。報告可以參考范飛龍老師的指導
  3. 嚴禁抄襲,有該行為者實驗成績歸零,並附加其他懲罰措施。

二、實驗內容及步驟

目錄

第24章:初識Android

  1. build:該目錄包含了自動生成的文件,這些文件包括了編譯設置項、R類等

  2. libs:該目錄包含了開發Android應用所需要的庫文件

  3. src:該目錄存放了應用的源代碼.java文件。默認情況下,它包含了MainActivity.java文件,這個源代碼j有一部分是執行了你點擊應用圖標時啟動應用所需要功能

  4. res:該目錄存放了所有的資源文件

  5. drawable:該目錄存放了項目的drawable對象和一些圖片資源

  6. layout:該目錄存放了各個界面的布局文件

  7. menu:該目錄存放了應用中設計的菜單對象

  8. mipmap:該目錄存放了應用的主要圖片資源

  9. values:該目錄存放了字符串、顏色等定義的資源集合

  10. AndroidManifest.xml:該文件是描述應用基礎特性的文件,定義了每個組件。

Android Studio項目的目錄樹

返回目錄

任務一 Android Stuidio的安裝測試:

任務要求

  • 參考Android開發簡易教程,安裝 Android Stuidio。
  • 完成Hello World, 要求修改res目錄中的內容,Hello World后要顯示自己的學號,自己學號前后一名同學的學號。
  • 學習Android Stuidio調試應用程序。

實驗過程

  • 將布局文件activity_main.xmltextandroid:text="Hello World!"改為android:text="Hello World! 20165318 20165317 20165319"

  • 也可將布局文件activity_main.xmldesigntext view內容改為Hello World! 20165318 20165317 20165319

  • 學習Android Stuidio調試應用程序
    調試過程如下:Tools->Android->Android Device Monitor

運行結果

返回目錄

第25章:活動

**Android中的四大組件 **

  • Activity
  • Service
  • ContentProvider
  • Broadcast Receiver

其中Activity是Android系統中最常用、最常見的一個組件
一個應用通常包含了多個Activity

**Activity類定義了如下的回調事件 **

  • onCreate():這是第一個回調方法。當Activity首次被創建時會調用它
  • onStart:當Activity對於用戶來說變為可視狀態時會回調此方法
  • onResume():當用戶開始與應用交互時會調用此方法
  • onPause():當前的Activity正在暫停中,並且先前的Activity正在恢復時,被暫停的這個Activity不會再接收用戶的輸入,也不再執行任何代碼和調用
  • onStop():當Activity不再為可視狀態時會調用該回調方法
  • onDestroy():該方法會在Activity被系統銷毀前被調用
  • onRestart():當Activity在被停止后重新啟動時,會調用該回調方法

返回目錄

任務二:Activity測試

任務要求

  • 構建項目,運行教材相關代碼
  • 創建 ThirdActivity, 在ThirdActivity中顯示自己的學號,修改代碼讓MainActivity啟動ThirdActivity

實驗過程

  • 配置Activity
    • 在文件AndroidManifest.xml中,只要為application元素添加activity子元素,即可配置Activity
    • 在這個任務中,我們需要調用ThirdActivity,所以在AndroidManifest.xml中再添加一個activity即可
  • 啟動、關閉Activity
    • 每一個控制文件的Activity都需要有對應的啟動程序文件(.java)和相應的布局文件(.xml)
    • 在這個任務中,要求讓MainActivity啟動ThirdActivity,所以還需要修改MainActivity

MainActivity代碼

package cn.edu.besti.is.sxx.activitydemo;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.TextView;
import android.widget.Button;
import android.widget.Toast;
import android.graphics.Color;
import android.widget.AnalogClock;

public class MainActivity extends Activity implements OnTouchListener {
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv = (TextView) findViewById(R.id.textView1);
        tv.setOnTouchListener(this);
    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it
// is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onTouch(View arg0, MotionEvent event) {
        Intent intent = new Intent(this, ThirdActivity.class);
        intent.putExtra("message", "20165318孫曉暄");
        startActivity(intent);
        return true;
    }
}

運行截圖

返回目錄

第26章:UI組件

  • Android提供了許多的UI組件,你能按需構建應用的用戶交互界面
    • TextView:文本標簽,該控件用於顯示文本
    • EditText:文本框,是預定義好的TextView的一個子類,有富文本編輯能力
    • AutoCompleteTextView:自動完成的文本標簽,類似於EditText。當用戶在輸入的時候會自動給出一些完整的建議
    • Button:按鈕,可以按壓、點擊,由用戶完成一個動作
    • ImageButton:圖片按鈕,顧名思義
    • CheckBox:復選框,可以作為用戶使用的一個開關。當有一系列可供選擇的選項時,建議使用該控件
    • ToggleButton:帶有一個“燈泡”效果的開關按鈕
    • RadioButton:單選按鈕,只有選中和未選中狀態
    • RadioGroup:是RadioButton的集合,在同組內只能選中一個單選按鈕
    • Spinner:下拉列表,允許用戶在多個選項中選擇一個
    • TimePicker:時間選擇器,能讓用戶輸入時間,有12小時和24小時模式
    • DatePicker:日期選擇器,能讓用戶輸入日期
    • ProgressBar:進度條,為用戶提供某項工作的進度,比如后台正在做的事情

返回目錄

任務三:UI測試

任務要求

  • 構建項目,運行教材相關代碼
  • 修改代碼讓Toast消息中顯示自己的學號信息

MainActivity.java

package cn.edu.besti.is.sxx.basiccomponents;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.util.AttributeSet;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btnshow1=(Button) findViewById(R.id.btn1);
        btnshow1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v){
                Toast toast = Toast.makeText(MainActivity.this,"20165318孫曉暄", Toast.LENGTH_LONG);
                toast.show();

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it
        // is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
}

運行截圖

返回目錄

第27章:布局

布局的類型

  • 線性布局LinearLayout:線性布局是一個視圖組(ViewGroup),能在水平或者垂直的單一方向上將所有子元素排成一行
  • 相對布局RelativeLayout:相對布局是一個將子視圖顯示在相對的位置上的布局
  • 表格布局TableLayout:表格布局是在行、列中組合子元素的視圖
  • 絕對布局AbsoluteLayout:絕對布局能讓你指定子元素的精確位置
  • 幀布局FrameLayout:幀布局是一個屏幕上的占位符,你可以用它來顯示單一視圖
  • 列表視圖ListView:列表布局是可以滾動的,是用於顯示子元素列表的視圖組
  • 網格視圖GridView:網格視圖是在二維可滾動的網格中顯示子元素的視圖組

返回目錄

任務四 布局測試

任務要求

  • 構建項目,運行教材相關代碼
  • 修改布局讓P290頁的界面與教材不同

實驗代碼
activity_main.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="2dp"
    android:paddingRight="2dp">
    <Button
        android:id="@+id/cancelButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="20165318"
        android:layout_marginTop="70dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
    <Button
        android:id="@+id/saveButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="孫曉暄"
        android:layout_below="@+id/cancelButton"
        android:layout_alignLeft="@+id/cancelButton"
        android:layout_alignStart="@+id/cancelButton"
        android:layout_marginTop="23dp" />
    <ImageView
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_marginTop="45dp"
        android:padding="4dp"
        android:src="@android:drawable/presence_audio_away"
        android:id="@+id/imageView"
        android:layout_below="@+id/saveButton"
        android:background="@android:color/white"
        android:layout_centerHorizontal="true" />
    <LinearLayout
        android:id="@+id/filter_button_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center|bottom"
        android:background="@android:color/holo_blue_dark"
        android:orientation="horizontal" >
        <Button
            android:id="@+id/filterButton"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="Open" />
        <Button
            android:id="@+id/shareButton"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="Share" />
        <Button
            android:id="@+id/deleteButton"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="Delete" />
    </LinearLayout>
</RelativeLayout>

運行截圖

返回目錄

第28章:監聽器

  • Android是基於事件的。使用活動中的一個視圖進行的用戶交互,可能會觸發一個事件,包括點擊、長按、觸碰和按鍵等等。
  • 要讓程序響應某一個事件,需要為該事件編寫一個監聽器。也就是要實現嵌入在android.view.View類中的一個接口。比如OnClickListener接口的onClick()方法。

返回目錄

任務五:事件處理測試

任務要求

運行教材本章相關代碼並截圖

實驗代碼

我在教材代碼的基礎上做了部分修改,使其能夠顯示我的學號

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
    <AnalogClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="90dp"
        android:id="@+id/analogClock1"
        android:onClick="changeColor" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="20165318孫曉暄"
        android:layout_marginLeft="70dp"
        android:layout_marginTop="300dp"
        android:textSize="38dp"
        android:textColor="#bbbb00"/>
</RelativeLayout>

運行截圖

返回目錄

實驗過程中遇到的問題及解決方法

  • 問題一:在安裝成功Android Studio,新建項目后,出現以下問題

  • 解決過程:嘗試根據提示try again,經過漫長的創建過程,終於成功了。

  • 問題二:第一次運行項目是,出現以下問題:

  1. clean project:Build->Clean Project
  2. rebuild project:Build->Rebuild Project
  3. 立即重啟應用系統:File->Invalidata Caches/Restart->Invalidata and Restart
  • 解決過程:這是由於環境還沒有建好,等項目全部運行完畢,這個窗口及會自動消失,手機能夠正常運行。

返回目錄

實驗心得與體會

這次實驗的內容Android開發是之前都沒有接觸過的領域,從軟件安裝到學習資料再到完成實驗,這個過程中遇到了很多問題,在這個過程中,我參考了學長學姐們的博客,並根據她們的總結,解決了很多問題。
總而言之,通過這次實驗,我初步掌握Android開發的一些基本知識,並能夠運行虛擬手機,在自己調試代碼的過程,對Android開發基本功能的運用了解的更深入。通過各種設置,最后在虛擬手機上得到展現,這使我對其的興趣更加深厚,達到了做中學的目的。

返回目錄

代碼托管

碼雲鏈接

返回目錄

PSP

步驟 耗時 百分比
需求分析 50min 20%
設計 20min 8%
代碼實現 100min 42%
測試 20min 8%
分析總結 50min 22%

返回目錄

參考資料

Android開發簡易教程
20155303 實驗四 Android程序設計
20155205 《Java程序設計》實驗四 Android程序設計
返回目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM