1. 程式人生 > >2018-2019-2 20189203 移動平臺應用開發實踐第八周學習總結

2018-2019-2 20189203 移動平臺應用開發實踐第八周學習總結

ets pad ons theme ... string rgb 聯系 deb

第31、32、33、34章

第31章 ListView

  • (一)、ListView 概念:
    ListView是Android中最重要的組件之一,幾乎每個Android應用中都會使用ListView。它以垂直列表的方式列出所需的列表項。
java.lang.Object
   ? android.view.View
    ? android.view.ViewGroup
      ? android.widget.AdapterView
        ? android.widget.AbsListView
          ? android.widget.ListView
  • (二)、ListView的兩個職責:
    ? 將數據填充到布局;
    ? 處理用戶的選擇點擊等操作。
  • (三)、列表的顯示需要三個元素:
    ? 1.ListVeiw:用來展示列表的View;
    ? 2.適配器: 用來把數據映射到ListView上的中介;
    ? 3.數據源: 具體的將被映射的字符串,圖片,或者基本組件。
  • (四)、什麽是適配器?
    適配器是一個連接數據和AdapterView的橋梁,通過它能有效地實現數據與AdapterView的分離設置,使AdapterView與數據的綁定更加簡便,修改更加方便。將數據源的數據適配到ListView中的常用適配器有:ArrayAdapter、SimpleAdapter 和 SimpleCursorAdapter。
?   ArrayAdapter最為簡單,只能展示一行字;
?   SimpleAdapter有最好的擴充性,可以自定義各種各樣的布局,除了文本外,還可以放ImageView(圖片)、Button(按鈕)、CheckBox(復選框)等等;
?   SimpleCursorAdapter可以認為是SimpleAdapter對數據庫的簡單結合,可以方便地把數據庫的內容以列表的形式展示出來。
?   但是實際工作中,常用自定義適配器。即繼承於BaseAdapter的自定義適配器類。
  • (五)、ListView的常用UI屬性:
?   android:divider
?   android:dividerHeight
?   android:entries
?   android:footerDividersEnabled
?   android:headerDividersEnabled

第32章GridView

Android 的 GridView 以二維滾動網格(行和列)顯示項目,網格項目不一定是預定的,但它們會自動使用 ListAdapter 布局插入。
一個適配器實際上是UI組件和數據源之間的橋梁,填充數據到UI組件。適配器可以用來提供數據,如:微調,列表視圖,網格視圖等。
ListView 和 GridView 是 AdapterView 的子類,它們可以綁定填充到一個適配器,從外部源檢索數據,並創建一個視圖表示每個數據項。
原文出自【易百教程】,商業轉載請聯系作者獲得授權,非商業轉載請保留原文鏈接:https://www.yiibai.com/android/android_grid_view.html

這個例子將通過簡單的步驟顯示如何使用 GridView 創建自己的 Android 應用程序。按照下面的步驟來 創建Android 應用程序 GridView:
Step 描述
1 使用Eclipse IDE創建Android應用程序,並將其命名為GridView在包com.yiibai.gridview下。
2 修改res/layout/activity_main.xml文件的默認內容以包括GridView的內容以及它的屬性。
3 在res/values/strings.xml文件中定義所需的常量。
4 把幾張照片放在res/drawable-hdpi文件夾。這幾張相處如下:sample0.jpg, sample1.jpg, sample2.jpg, sample3.jpg, sample4.jpg, sample5.jpg, sample6.jpg 和 sample7.jpg.
5 在包com.yiibai.helloworld下創建一個新類ImageAdapter擴展BaseAdapter。將用於填充視圖,這個類將實現一個適配器的功能。
6 運行該應用程序啟動Android模擬器並驗證應用程序所運行的結果。
以下是內容是主活動文件 src/com.yiibai.gridview/MainActivity.java。這個文件可以包括每個的基本生命周期方法。

package com.yiibai.gridview;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.GridView;

public class MainActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      GridView gridview = (GridView) findViewById(R.id.gridview);
      gridview.setAdapter(new ImageAdapter(this));
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }
   
}

下面是 res/layout/activity_main.xml 文件的內容:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
   android:id="@+id/gridview"
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent"
   android:columnWidth="90dp"
   android:numColumns="auto_fit"
   android:verticalSpacing="10dp"
   android:horizontalSpacing="10dp"
   android:stretchMode="columnWidth"
   android:gravity="center"
/>

以下是文件 res/values/strings.xml 內容定義兩個常量:

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

   <string name="app_name">HelloWorld</string>
   <string name="action_settings">Settings</string>

</resources>

以下是 src/com.yiibai.gridview/ImageAdapter.java 文件的內容:

package com.yiibai.gridview;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
   private Context mContext;

   // Constructor
   public ImageAdapter(Context c) {
      mContext = c;
   }

   public int getCount() {
      return mThumbIds.length;
   }

   public Object getItem(int position) {
      return null;
   }

   public long getItemId(int position) {
      return 0;
   }

   // create a new ImageView for each item referenced by the Adapter
   public View getView(int position, View convertView, ViewGroup parent) {
      ImageView imageView;
      if (convertView == null) {
      imageView = new ImageView(mContext);
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
      imageView.setPadding(8, 8, 8, 8);
      } else {
      imageView = (ImageView) convertView;
      }

      imageView.setImageResource(mThumbIds[position]);
      return imageView;
   }

   // Keep all Images in array
   public Integer[] mThumbIds = {
      R.drawable.sample_2, R.drawable.sample_3,
      R.drawable.sample_4, R.drawable.sample_5,
      R.drawable.sample_6, R.drawable.sample_7,
      R.drawable.sample_0, R.drawable.sample_1,
      R.drawable.sample_2, R.drawable.sample_3,
      R.drawable.sample_4, R.drawable.sample_5,
      R.drawable.sample_6, R.drawable.sample_7,
      R.drawable.sample_0, R.drawable.sample_1,
      R.drawable.sample_2, R.drawable.sample_3,
      R.drawable.sample_4, R.drawable.sample_5,
      R.drawable.sample_6, R.drawable.sample_7
   };
}

讓我們嘗試運行 GridView 應用程序,Eclipse AVD上安裝的應用程序,並啟動它,如果設置和應用都沒有問題,它會顯示以下模擬器窗口:
原文出自【易百教程】,商業轉載請聯系作者獲得授權,非商業轉載請保留原文鏈接:https://www.yiibai.com/android/android_grid_view.html
這個例子將通過簡單的步驟顯示如何使用 GridView 創建自己的 Android 應用程序。按照下面的步驟來 創建Android 應用程序 GridView:
Step 描述
1 使用Eclipse IDE創建Android應用程序,並將其命名為GridView在包com.yiibai.gridview下。
2 修改res/layout/activity_main.xml文件的默認內容以包括GridView的內容以及它的屬性。
3 在res/values/strings.xml文件中定義所需的常量。
4 把幾張照片放在res/drawable-hdpi文件夾。這幾張相處如下:sample0.jpg, sample1.jpg, sample2.jpg, sample3.jpg, sample4.jpg, sample5.jpg, sample6.jpg 和 sample7.jpg.
5 在包com.yiibai.helloworld下創建一個新類ImageAdapter擴展BaseAdapter。將用於填充視圖,這個類將實現一個適配器的功能。
6 運行該應用程序啟動Android模擬器並驗證應用程序所運行的結果。
以下是內容是主活動文件 src/com.yiibai.gridview/MainActivity.java。這個文件可以包括每個的基本生命周期方法。

package com.yiibai.gridview;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.GridView;

public class MainActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      GridView gridview = (GridView) findViewById(R.id.gridview);
      gridview.setAdapter(new ImageAdapter(this));
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }
   
}

下面是 res/layout/activity_main.xml 文件的內容:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
   android:id="@+id/gridview"
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent"
   android:columnWidth="90dp"
   android:numColumns="auto_fit"
   android:verticalSpacing="10dp"
   android:horizontalSpacing="10dp"
   android:stretchMode="columnWidth"
   android:gravity="center"
/>

以下是文件 res/values/strings.xml 內容定義兩個常量:

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

   <string name="app_name">HelloWorld</string>
   <string name="action_settings">Settings</string>

</resources>

以下是 src/com.yiibai.gridview/ImageAdapter.java 文件的內容:

package com.yiibai.gridview;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
   private Context mContext;

   // Constructor
   public ImageAdapter(Context c) {
      mContext = c;
   }

   public int getCount() {
      return mThumbIds.length;
   }

   public Object getItem(int position) {
      return null;
   }

   public long getItemId(int position) {
      return 0;
   }

   // create a new ImageView for each item referenced by the Adapter
   public View getView(int position, View convertView, ViewGroup parent) {
      ImageView imageView;
      if (convertView == null) {
      imageView = new ImageView(mContext);
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
      imageView.setPadding(8, 8, 8, 8);
      } else {
      imageView = (ImageView) convertView;
      }

      imageView.setImageResource(mThumbIds[position]);
      return imageView;
   }

   // Keep all Images in array
   public Integer[] mThumbIds = {
      R.drawable.sample_2, R.drawable.sample_3,
      R.drawable.sample_4, R.drawable.sample_5,
      R.drawable.sample_6, R.drawable.sample_7,
      R.drawable.sample_0, R.drawable.sample_1,
      R.drawable.sample_2, R.drawable.sample_3,
      R.drawable.sample_4, R.drawable.sample_5,
      R.drawable.sample_6, R.drawable.sample_7,
      R.drawable.sample_0, R.drawable.sample_1,
      R.drawable.sample_2, R.drawable.sample_3,
      R.drawable.sample_4, R.drawable.sample_5,
      R.drawable.sample_6, R.drawable.sample_7
   };
}

讓我們嘗試運行 GridView 應用程序,Eclipse AVD上安裝的應用程序,並啟動它,如果設置和應用都沒有問題,它會顯示以下模擬器窗口:

第33章樣式和主題

在android很多地方要對控件的樣式(如:ActionBar的樣式)和Activity的樣式進行設置,對應控件的樣式設置是(Style)對Activity的樣式設置是(Theme)
API是這樣來解釋Style的:
  A style resource defines the format and look for a UI.A style can be applied to an individual View (from within a layout file)
   or to an entire Activity or application (from within the manifest file)
下面就來說說怎麽進行style設置:
1.在資源文件夾裏創建好style.xml和theme.xml
2.在XML文件中都要添加一個根節點
3.在根節點裏面

2018-2019-2 20189203 移動平臺應用開發實踐學習總結

ets pad ons theme ... string rgb 聯系 deb 第31、32、33、34章 第31章 ListView (一)、ListView 概念: ListView是Android中最重要的組件之一,幾乎每個Android應用中都會使用ListVie

2018-2019-2 20189203 移動平臺應用開發實踐學習總結

方便 不同 技術 rest 接收 ttext 生命周期 androi linear 第23、24、25、26章學習 第23章 Android簡介 Android是一種多用戶的Linux系統。它快速達到巔峰的原因之一是,它使用Java作為編程語言。所有Android類和接口

2018-2019-2 20189203 移動平臺應用開發實踐學習總結

ace The ont ces horizon 產生 xtend 成了 例如 第39,40,41,42章 第39章 偏好 在Android應用中,我們常需要記錄用戶設置的一些偏好參數,,此時我們就需要用SharedPreferences和Editor將這些信息保存下來,在

2018-2019-2 20189203 移動平臺應用開發實踐四周學習總結

nta 測試 區別 構造函數 類型參數 一句話 操作 get lee 第12、13、14、15章學習 第12章 枚舉 一、常量 在JDK1.5 之前,我們定義常量都是: public static final.... 。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類

20172315 2018-2019-2 《程式設計與資料結構》七週學習總結

20172315 2018-2019-2 《程式設計與資料結構》第七週學習總結 教材學習內容總結 二又查詢樹是一種含有附加屬性的二又樹,即其左孩子小於父結點,而父結點又小於或等於右孩子。 每個BinaryTreeNode物件要維護一個指向結點所儲存元素的引用,另外還要維護指向結點的每個孩子

20172303 2018-2019-1《程式設計與資料結構》7學習總結

20172303 2018-2019-1《程式設計與資料結構》第7周學習總結 教材學習內容總結 本週在上週學習了二叉樹的基礎上,學習了一種二叉樹的特殊形式——二叉查詢樹,又叫有序二叉樹、排序二叉樹。本章學習了兩種二叉查詢樹的實現方法,以及兩種二叉查詢樹的應用。 一、概述 1.二叉查詢樹

# 20172307 2018-2019-1 《程式設計與資料結構》7學習總結

20172307 2018-2019-1 《程式設計與資料結構》第7周學習總結 教材學習內容總結 樹的分類 廣義樹:對結點所含有的孩子數目無限制的樹。 n元樹:每一結點不超過n個孩子的樹。(結點最多具有兩個孩子的樹稱為二叉樹) 樹的平衡:樹的所有葉子都位於同一層或者至少是彼此相差不超過一

20172313 2018-2019-1 《程式設計與資料結構》學習總結

20172313 2018-2019-1 《程式設計與資料結構》第八週學習總結 教材學習內容總結 堆 堆(heap)就是具有兩個附加屬性的一棵二叉樹。特點:①最小堆是一棵完全樹。②最小堆對每一結點,它小於或等於其左孩子和右孩子。(最大堆的結點大於或等於它的左右孩子) Heap

20172323 2018-2019-1 《程式設計與資料結構》學習總結

20172323 2018-2019-1 《程式設計與資料結構》第八週學習總結 教材學習內容總結 本週學習了第12章優先佇列與堆 12.1 堆 堆是具有兩個附加屬性的一棵二叉樹,它是一棵完全樹,對於每一結點,它小於或等於其左孩子和右孩子,這樣定義下的堆是最小堆,如果對於每一結點,它大於或等

20172314 2018-2019-1《程式設計與資料結構》學習總結

教材學習內容總結 堆 堆:是一顆完全二叉樹,每一個結點都小於等於左右孩子(最小堆),或大於等於左右孩子(最大堆)他的每一個子樹也是最小堆或最大堆。 堆的操作 addElement操作(堆的插入) 插入新結點時,是作為葉子結點插入的,且一定要保持樹的完整性。如果最下層不滿,插入

20172327 2018-2019-1 《程式設計與資料結構》學習總結

20172327 2018-2019-1 《程式設計與資料結構》第八週學習總結 教材學習內容總結 第十二章 優先佇列與堆 堆 1.最小堆(minheap):對是一個完全二叉樹,其中的每個結點都小於或等於它的兩個孩子。 2.最大堆(maxheap):對是一個完全二叉

20172318 2018-2019-1 《程式設計與資料結構》8學習總結

20172318 2018-2019-1 《程式設計與資料結構》第8周學習總結 教材學習內容總結 優先佇列與堆 heap:堆 一種完全二叉樹,可以是最小堆,也可以是最大堆。 堆是一棵完全二叉樹,其中的每一結點都小於或等於它的兩個孩子。 minheap:最小堆 具有

20172303 2018-2019-1《程式設計與資料結構》8學習總結

20172303 2018-2019-1《程式設計與資料結構》第8周學習總結 教材學習內容總結 本週的內容又是一次延續上一週學習內容掌握新知識的過程,本週學習了一種特殊形式的樹——堆,學習了兩種實現堆的方法:用連結串列實現和用陣列實現,同時還學習了使用堆來實現一種特殊佇列——優先佇列以及基於堆實現的

20172312 2018-2019-1 《程式設計與資料結構》學習總結

20172312 2018-2019-1 《程式設計與資料結構》第八週學習總結 教材學習內容總結 第十二章 堆 1.堆:具有兩個附加屬性的一顆二叉樹,它是一顆完全二叉樹,對每一結點,它小於或等於其左右孩子(或大於等於其左右孩子) 2.最小堆:對每一結點,它小於或等於其左右孩子,將其最小元素儲

# 20172333 2018-2019-1 《程式設計與資料結構》學習總結

20172333 2018-2019-1 《程式設計與資料結構》第八週學習總結 教材學習內容總結 《Java軟體結構與資料結構》第十二章-優先佇列與棧 一、堆 ①堆是一顆具有兩個附加屬性的完全二叉樹 附加屬性:1.堆是一顆完全樹。2.對於每個結點,它小於或等於其左孩子和右孩子。

20172307 2018-2019-1 《程式設計與資料結構》8學習總結

20172307 2018-2019-1 《程式設計與資料結構》第8周學習總結 教材學習內容總結 二叉查詢樹是一種含有附加屬性的二叉樹,即其左孩子小於父結點,而父結點又小於或等於右孩子。 每個BinaryTreeNode物件要維護一個指向結點所儲存元素的引用,另外還要維護指向結點的每個孩子的引用

20172315 2018-2019-1 《程式設計與資料結構》學習總結

20172315 2018-2019-1 《程式設計與資料結構》第八週學習總結 教材學習內容總結 堆是一棵完全二叉樹,其中的每一結點都小於或等於它的兩個孩子。 一個堆也可以是最大堆(maxheap),其中的結點大於或等於它的左右孩子。 最小堆將其最小元素儲存在該二又樹的根處,且其根的兩個孩子

20172324 2018-2019-1 《程式設計與資料結構》學習總結

20172324 2018-2019-1 《程式設計與資料結構》第八週學習總結 教材學習內容總結 堆 具有兩個附加屬性的二叉樹: 是一顆完全樹 對每一結點,它小於或等於其左孩子和右孩子(最小堆) 最大堆的結點大於或等於它的左右孩子 最小堆將其最小元素儲存在該

20172303 2018-2019-1《程式設計與資料結構》5學習總結

20172303 2018-2019-1《程式設計與資料結構》第5周學習總結 教材學習內容總結 終於結束了各種不同型別的資料結構的學習,本章的內容轉向了對於不同資料結構中儲存的資料的處理方面,主要學習了兩部分內容——查詢和排序,其中查詢介紹了兩種方法,排序除上學期學過的兩種排序方法,又學習了四種新的

20172324 2018-2019-1 《程式設計與資料結構》學習總結

20172324 2018-2019-1 《程式設計與資料結構》第九周學習總結 教材學習內容總結 無向圖 無向圖是一種邊為無序結點對的圖: 圖由頂點和邊組成 頂點由名字或標號來表示,如:A、B、C、D; 邊由連線的定點對來表示,如:(A,B),(C,D),表示兩頂點之間有一