2018-2019-20175205實驗四《Android程序設計》實驗報告

2018-2019-20175205實驗四《Android程序設計》實驗報告

實驗要求

  • 參考Android開發簡易教程
  • 完成雲班課中的檢查點,也能夠先完成實驗報告,直接提交。注意不能只有截圖,要有知識點,原理,遇到的問題和解決過程等說明。實驗報告中一個檢查點要有多張截圖。
  • 發表實驗報告博客,標題「學期(如2018-2019-2) 學號(如20175300) 實驗四《Android開發基礎》實驗報告」

教材學習

第二十五章 活動

  • 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在被中止後從新啓動時,會調用該回調方法

第二十六章 UI組件

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

第二十七章 佈局

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

實驗步驟

任務一

  • 安裝 Android Stuidio
  • 完成Hello World, 要求修改res目錄中的內容,Hello World後要顯示本身的學號,本身學號先後一名同窗的學號
  • 學習Android Stuidio調試應用程序

實驗過程

  • 將佈局文件activity_main.xml中text的android:text="Hello World!"改成android:text="Hello World! 20175204 20175205 20175206"
  • 代碼以下
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!20175204 20175205 20175206"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
  • 運行結果

任務二

  • 構建項目,運行教材相關代碼
  • 建立 ThirdActivity, 在ThirdActivity中顯示本身的學號,修改代碼讓MainActivity啓動ThirdActivity

實驗過程

  • 修改AndroidManifest.xml,添加一個activity活動
<activity
            android:name=".ThirdActivity">
</activity>
  • 在java中添加一個ThirdActivity.java文件
  • 在layout中添加third_activity.xml文件
  • 修改MainActivity.java
  • 代碼以下
package com.example.administrator.myapplication;

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;
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", "20175205");
        startActivity(intent);
        return true;
    }
}
  • 運行結果

任務三

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

實驗過程

  • 修改代碼讓Toast消息中顯示本身的學號信息
  • activity_mian代碼以下
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 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:layout_gravity="center"
    android:gravity="center_horizontal"
    android:padding="120dp"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_marginTop="16dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:text="20175205侯穎"
        android:id="@+id/btn1"  />

</LinearLayout>
  • MainActivity代碼以下
package com.example.administrator.ui;


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;
    }


   /* @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId())
        {
            case R.id. id_action_add:
                //事件
                break;
            case R.id. id_action_delete:
                //事件
                break;
        }
        return true;

    }*/

}
  • 運行結果

任務四

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

運行結果

任務五

  • 構建項目,運行教材相關代碼

運行結果

實驗中遇到的問題

Q:ERROR: Not enough disk space to run AVD 'Pixel_2_XL_API_26'. Exiting...
java

A:是說安裝模擬的磁盤空間不足,致使沒法運行模擬器
解決方案:默認的模擬器安裝在C盤中,能夠打開模擬器管理界面AVD Manager,右鍵查看(show ondisk)模擬器的安裝目錄,將模擬器放入空間足夠的磁盤中,而後修改路徑android

Q:Error:Cause: buildToolsVersion is not specified.
A:緣由是build.gradle中沒有buildToolsVersion
解決方案:在build.gradle中添加: buildToolsVersion 「28.0.3」
git

Q:menu爲何是紅色的。。。
app

A:在res目錄下添加menu文件夾,再添加xml佈局文件
ide

相關文章
相關標籤/搜索