20169205 2016-2017-2 《移動平臺應用開發實踐》第8周學習總結

20169205 2016-2017-2 《移動平臺應用開發實踐》第8周學習總結

教材學習內容總結

這四章的內容主要是對android studio的一些核心控件與視圖及基本知識進行敘述。java

  • 顯示Options Menu

1.在res/menu中編寫菜單資源文件android

  1. 在Activity中重寫onCreateOptionsMenu和onOptionsItemSelected兩個方法。
  • 上下文菜單

要在相應的view上按幾秒後才顯示的,用於view,跟某個具體的view
綁定在一塊兒.
▪ 主要須要用到或重寫Activity的如下方法:
▪ registerForContextMenu()爲某個view註冊context menu,通常在onCreate裏面調用。
▪ onCreateContextMenu()建立context menu,context meun每次顯示時都會調用這個函數。
▪ onContextItemSelected()處理選中的菜單項。git

  • ListView
  1. 設置相關XML文件與Java源代碼

打開res\layout\activity_main.xml,修改根元素爲LinearLayout,同時加上本節要學習的控件。數組

<?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:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.zrthas.administrator.commoncontrol.MainActivity">

     <ListView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView_fun">
    </ListView>
</LinearLayout>
打開res\lvalues\strings.xml中,將相對的XML字段修改以下:

<resources>
<string name="app_name">經常使用組件測試</string>
<string name="List_View">ListView演示</string>
<string name="commonControl_List">經常使用Android演示</string>
</resources>

最後在Java源代碼中添加對ListView的調用android-studio

public class MainActivity extends AppCompatActivity {

    /*
    定義數組來表示listView要顯示,也是咱們學習哪些經常使用的控件
     */
    private static final String[] commonFunList = new String[]{

            "ListView控件演示",
            "ProgressBar控件演示",
            "GridView控件演示",
            "ScrollView控件演示",
            "DatePicker控件演示"
    };

    //定義listView
    private ListView listView ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listView_fun);
        listView.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                commonFunList));
    }
}
  1. 重要方法說明

在Java代碼中,能夠看到,Android對ListView的調用主要是由方法setAdapter。具體詳細介紹:Android之Adapter用法總結。目前使用只要記得,要裝配這些數據就須要一個鏈接ListView視圖對象和數組數據的適配器來二者的適配工做,ArrayAdapter的構造須要三個參數,依次爲this,佈局文件(注意這裏的佈局文件描述的是列表的每一行的佈局,android.R.layout.simple_list_item_1是系統定義好的佈局文件只顯示一行文字,數據源(一個List集合)。同時用setAdapter完成適配的最後工做。app

在setAdapter中的simple_list_item_1。爲何咱們本身設置的TextView呢?這主要因爲目前咱們所使用的ListView爲系統自帶控件。它裏面包含了simple_list_item_一、simple_list_item_二、two_line_list_item等。如今對這幾個佈局進行詳解。ide

3.1 simple_list_item_1佈局函數

此佈局是最簡單的一種佈局方式。只含有一個TextView。做用於單行展現。就如咱們運行後程序的列表。工具

3.2 simple_list_item_2佈局佈局

這個佈局是雙層佈局,它包含兩個TextView:android.R.id.text1和android.R.id.text2。此佈局是上層爲大字體,下層爲小字體。

3.3 two_line_list_item佈局

與simple_list_item_2佈局一致包含兩個TextView。而跟它不一樣的是,兩層文字的大小都是同樣大小的。

  1. Activity頁面間跳轉

通過幾前章的學習,可能同窗們對生成一個簡單的ListView順手而來。那咱們根據之前所學習的內容,對ListView中的列表內容都建立相應的頁面。同時點擊列表,會跳轉至相應的Activity中。下面分爲兩步:

4.1 判斷點擊哪一個Item

這裏面咱們調用setOnItemClickListener監聽器。

listView.setOnItemClickListener(
                new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                       setTitle("您點擊了第"+position+"個項目");
                    }
                }
        );

onItemClick後面有4個參數,乍看直接暈菜,那麼每一個參數到底是何意義呢.
舉個例子會理解的更快:
X, Y兩個listview,X裏有1,2,3,4這4個item,Y裏有a,b,c,d這4個item。若是你點了b這個item。以下:
arg0至關於listview Y適配器的一個指針,能夠經過它來得到Y裏裝着的一切東西,再通俗點就是說告訴你,你點的是Y,不是X
arg1是你點的b這個view的句柄,就是你能夠用這個view,來得到b裏的控件的id後操做控件
arg2是b在Y適配器裏的位置(生成listview時,適配器一個一個的作item,而後把他們按順序排好隊,在放到listview裏,意思就是這個b是第position號作好的)
arg3是b在listview Y裏的第幾行的位置(很明顯是第2行),大部分時候position和id的值是同樣的,若是須要的話,你能夠本身加個log把position和id都弄出來在logcat裏瞅瞅
而setTitle是將應用的標題改成當前所點擊的行數。

獲取到是點擊哪一個Item後,咱們能夠對這個Item進行跳轉另外一個Activity操做。在此以前,對應每一個界面都生成一個佈局文件與java文件。同時在AndroidManifest.xml添加新增的activity。

首先,在onCreate(Bundle)前加個方法toNewActivity(int)。這個方法是用來判斷用戶點擊哪一個Item,由此跳轉到哪一個Activity。如下是簡單的實現:

/*** 根據Item的position位置來判斷具體跳轉至哪一個Activity */
 private void toNewActivity(int position){
        Intent i;
        switch (position){
            case 0:
                i = new Intent(MainActivity.this,ListViewActivity.class);
                break;
            case 1:
                i = new Intent(MainActivity.this,ProgressBarActivity.class);
                break;
            case 2:
                i = new Intent(MainActivity.this,GridViewActivity.class);
                break;
            case 3:
                i = new Intent(MainActivity.this,ScrollViewActivity.class);
                break;
            case 4:
                i = new Intent(MainActivity.this,DatePickerActivity.class);
                break;
            default:
                i = new Intent(MainActivity.this,MainActivity.class);
                break;
        }
        startActivity(i);
    }

在原來對ListView監聽器中,把setTitle()方法改爲toNewActivity()。

listView.setOnItemClickListener(
                new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        toNewActivity(position);
                    }
                }
        );

最後運行下項目,點擊各個不一樣的Item,會跳轉至不一樣的Activity。

  • GirdView使用
    GridView(網格視圖)是按照行列的方式來顯示內容的,通常用於顯示圖片,圖片等內容,好比實現九宮格圖,用GridView是首選,也是最簡單的。主要用於設置Adapter。
    GridView經常使用的XML屬性:
    Android:columnWidth 設置列的寬度。

android:gravity 設置此組件中的內容在組件中的位置。可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical能夠多選,用「|」分開。

android:horizontalSpacing 兩列之間的間距。

android:numColumns 設置列數。

android:stretchMode 縮放模式。

android:verticalSpacing 兩行之間的間距。

教材學習中的問題和解決過程

打開Android Studio,新建一個Android項目,而後發現可視化編輯界面沒法正常顯示,也就是Design視圖

錯誤截圖

解決

這是Android SDK 版本問題致使的錯誤,更改SDK版本便可
若只有一個可用API,可經過SDK Manager安裝其它版本的SDK(API),點擊工具欄SDK Manager或點擊File->Settings->Appearance & Behavior -> System Settings -> Android SDK 進入SDK安裝選項
安裝新的SDK後,問題解決

上週重點錯題總結

題目

Multi-dimensional arrays that contain arrays of different lengths in any one dimension are called _________________.(包括不一樣長度數組的多維數組叫作_______)

A .ragged arrays(鋸齒狀數組)
B .static arrays(靜態數組)
C .two-dimensional arrays(二維數組)
D .constant arrays(常量數組)
E .overloaded arrays(重載數組)

正確答案: A

解析

Ragged arrays are multi-dimensional arrays that contain arrays at the same dimension with differing lengths.

學習進度條

碼雲項目地址

代碼託管

由於從新git了一下,可能周的顯示不是很正常

學習目標

時間 學習時間目標 實際進行時間
第一週 8 8
第二週 10 8.5
第三週 12 10.5
第四周 12 12
第五週 12 11
第六週 12 13
第七週 12 12
第八週 12 12

但願可以經過系統地學習,探索一些開源項目並改進功能,養成良好的開發習慣,造成一套完整的android生態知識體系,並能徹底自主開發一款具備必定實用價值的app。

相關文章
相關標籤/搜索