1. 程式人生 > ># 20165318 2017-2018-2 《Java程序設計》第四周學習總結

# 20165318 2017-2018-2 《Java程序設計》第四周學習總結

1.0 tab hello AD long onclick broadcast pic 銷毀

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
    • 任務一:Android Stuidio的安裝測試
  • 第25章:活動
    • 任務二:Activity測試
  • 第26章:UI組件
    • 任務三:UI測試
  • 第27章:布局
    • 任務四:布局測試
  • 第28章:監聽器
    • 任務五:事件處理測試
  • 實驗過程中遇到的問題及解決方法
  • 實驗體會與總結
  • 代碼托管
  • PSP需求分析
  • 參考資料

第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>

運行截圖

技術分享圖片

返回目錄

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

返回目錄

實驗心得與體會

返回目錄

代碼托管

碼雲鏈接

返回目錄

PSP

返回目錄

參考資料

Android開發簡易教程

返回目錄

# 20165318 2017-2018-2 《Java程序設計》第四周學習總結