1. 程式人生 > >Android入門第八篇之GridView 九宮圖

Android入門第八篇之GridView 九宮圖

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

本文來自http://blog.csdn.net/hellogv/

       GridView跟ListView都是比較常用的多控制元件佈局,而GridView更是實現九宮圖的首選!本文就是介紹如何使用GridView實現九宮圖。GridView的用法很多,網上介紹最多的方法就是自己實現一個ImageAdapter繼承BaseAdapter,再供GridView使用,類似這種的方法本文不再重複,本文介紹的GridView用法跟前文ListView的極其類似。。。。也算是我偷懶一下,嘻嘻嘻嘻。。。。

       先來貼出本文程式碼執行的結果:

1

 

本文需要新增/修改3個檔案:main.xml、night_item.xml、JAVA原始碼。

main.xml原始碼如下,本身是個GirdView,用於裝載Item:

[xhtml] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>
      
  2. <GridView xmlns:android="http://schemas.android.com/apk/res/android"   
  3.     android:id="@+id/gridview"  
  4.     android:layout_width="fill_parent"   
  5.     android:layout_height
    ="fill_parent"  
  6.     android:numColumns="auto_fit"  
  7.     android:verticalSpacing="10dp"  
  8.     android:horizontalSpacing="10dp"  
  9.     android:columnWidth="90dp"  
  10.     android:stretchMode="columnWidth"  
  11.     android:gravity="center"  
  12. />  
<?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:numColumns="auto_fit"    android:verticalSpacing="10dp"    android:horizontalSpacing="10dp"    android:columnWidth="90dp"    android:stretchMode="columnWidth"    android:gravity="center"/>

介紹一下里面的某些屬性:

android:numColumns="auto_fit" ,GridView的列數設定為自動

android:columnWidth="90dp",每列的寬度,也就是Item的寬度
android:stretchMode="columnWidth",縮放與列寬大小同步
android:verticalSpacing="10dp",兩行之間的邊距,如:行一(NO.0~NO.2)與行二(NO.3~NO.5)間距為10dp
android:horizontalSpacing="10dp",兩列之間的邊距。

 

接下來介紹night_item.xml,這個XML跟前面ListView的ImageItem.xml很類似:

[xhtml] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout   
  3.          xmlns:android="http://schemas.android.com/apk/res/android"   
  4.          android:layout_height="wrap_content"   
  5.          android:paddingBottom="4dip" android:layout_width="fill_parent">  
  6.          <ImageView   
  7.                android:layout_height="wrap_content"   
  8.                android:id="@+id/ItemImage"   
  9.                android:layout_width="wrap_content"   
  10.                android:layout_centerHorizontal="true">   
  11.          </ImageView>  
  12.          <TextView   
  13.                android:layout_width="wrap_content"   
  14.                android:layout_below="@+id/ItemImage"   
  15.                android:layout_height="wrap_content"   
  16.                android:text="TextView01"   
  17.                android:layout_centerHorizontal="true"   
  18.                android:id="@+id/ItemText">  
  19.          </TextView>  
  20. </RelativeLayout>  
<?xml version="1.0" encoding="utf-8"?><RelativeLayout          xmlns:android="http://schemas.android.com/apk/res/android"          android:layout_height="wrap_content"          android:paddingBottom="4dip" android:layout_width="fill_parent">         <ImageView                android:layout_height="wrap_content"                android:id="@+id/ItemImage"                android:layout_width="wrap_content"                android:layout_centerHorizontal="true">          </ImageView>         <TextView                android:layout_width="wrap_content"                android:layout_below="@+id/ItemImage"                android:layout_height="wrap_content"                android:text="TextView01"                android:layout_centerHorizontal="true"                android:id="@+id/ItemText">         </TextView></RelativeLayout>

 

最後就是JAVA的原始碼了,也跟前面的ListView的JAVA原始碼很類似,不過多了“選中”的事件處理:

[java] view plain copy print ?
  1.   public void onCreate(Bundle savedInstanceState) {  
  2.       super.onCreate(savedInstanceState);  
  3.       setContentView(R.layout.main);  
  4.       GridView gridview = (GridView) findViewById(R.id.gridview);  
  5.         
  6.       //生成動態陣列,並且轉入資料  
  7.       ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();  
  8.       for(int i=0;i<10;i++)  
  9.       {  
  10.         HashMap<String, Object> map = new HashMap<String, Object>();  
  11.         map.put("ItemImage", R.drawable.icon);//新增影象資源的ID  
  12.     map.put("ItemText""NO."+String.valueOf(i));//按序號做ItemText  
  13.         lstImageItem.add(map);  
  14.       }  
  15.       //生成介面卡的ImageItem <====> 動態陣列的元素,兩者一一對應  
  16.       SimpleAdapter saImageItems = new SimpleAdapter(this//沒什麼解釋  
  17.                                                 lstImageItem,//資料來源   
  18.                                                 R.layout.night_item,//night_item的XML實現  
  19.                                                   
  20.                                                 //動態陣列與ImageItem對應的子項          
  21.                                                 new String[] {"ItemImage","ItemText"},   
  22.                                                   
  23.                                                 //ImageItem的XML檔案裡面的一個ImageView,兩個TextView ID  
  24.                                                 new int[] {R.id.ItemImage,R.id.ItemText});  
  25.       //新增並且顯示  
  26.       gridview.setAdapter(saImageItems);  
  27.       //新增訊息處理  
  28.       gridview.setOnItemClickListener(new ItemClickListener());  
  29.   }  
  30.     
  31.   //當AdapterView被單擊(觸控式螢幕或者鍵盤),則返回的Item單擊事件  
  32.   class  ItemClickListener implements OnItemClickListener  
  33.   {  
  34. public void onItemClick(AdapterView<?> arg0,//The AdapterView where the click happened   
  35.                                   View arg1,//The view within the AdapterView that was clicked  
  36.                                   int arg2,//The position of the view in the adapter  
  37.                                   long arg3//The row id of the item that was clicked  
  38.                                   ) {  
  39.     //在本例中arg2=arg3  
  40.     HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2);  
  41.     //顯示所選Item的ItemText  
  42.     setTitle((String)item.get("ItemText"));  
  43. }  
  44.       
  45.   }  
    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        GridView gridview = (GridView) findViewById(R.id.gridview);                //生成動態陣列,並且轉入資料        ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();        for(int i=0;i<10;i++)        {         HashMap<String, Object> map = new HashMap<String, Object>();         map.put("ItemImage", R.drawable.icon);//新增影象資源的ID   map.put("ItemText", "NO."+String.valueOf(i));//按序號做ItemText         lstImageItem.add(map);        }        //生成介面卡的ImageItem <====> 動態陣列的元素,兩者一一對應        SimpleAdapter saImageItems = new SimpleAdapter(this, //沒什麼解釋                                              lstImageItem,//資料來源                                               R.layout.night_item,//night_item的XML實現                                                                                            //動態陣列與ImageItem對應的子項                                                      new String[] {"ItemImage","ItemText"},                                                                                             //ImageItem的XML檔案裡面的一個ImageView,兩個TextView ID                                              new int[] {R.id.ItemImage,R.id.ItemText});        //新增並且顯示        gridview.setAdapter(saImageItems);        //新增訊息處理        gridview.setOnItemClickListener(new ItemClickListener());    }        //當AdapterView被單擊(觸控式螢幕或者鍵盤),則返回的Item單擊事件    class  ItemClickListener implements OnItemClickListener    {  public void onItemClick(AdapterView<?> arg0,//The AdapterView where the click happened                               View arg1,//The view within the AdapterView that was clicked                              int arg2,//The position of the view in the adapter                              long arg3//The row id of the item that was clicked                              ) {   //在本例中arg2=arg3   HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2);   //顯示所選Item的ItemText   setTitle((String)item.get("ItemText"));  }         }

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述 你好! 這是你第一次使用 **Markdown編輯器** 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。

新的改變

我們對Markdown編輯器進行了一些功能拓展與語法支援,除了標準的Markdown編輯器功能,我們增加了如下幾點新功能,幫助你用它寫部落格:

  1. 全新的介面設計 ,將會帶來全新的寫作體驗;
  2. 在創作中心設定你喜愛的程式碼高亮樣式,Markdown 將程式碼片顯示選擇的高亮樣式 進行展示;
  3. 增加了 圖片拖拽 功能,你可以將本地的圖片直接拖拽到編輯區域直接展示;
  4. 全新的 KaTeX數學公式 語法;
  5. 增加了支援甘特圖的mermaid語法1 功能;
  6. 增加了 多螢幕編輯 Markdown文章功能;
  7. 增加了 焦點寫作模式、預覽模式、簡潔寫作模式、左右區域同步滾輪設定 等功能,功能按鈕位於編輯區域與預覽區域中間;
  8. 增加了 檢查列表 功能。

功能快捷鍵

撤銷:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜體:Ctrl/Command + I
標題:Ctrl/Command + Shift + H
無序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
檢查列表:Ctrl/Command + Shift + C
插入程式碼:Ctrl/Command + Shift + K
插入連結:Ctrl/Command + Shift + L
插入圖片:Ctrl/Command + Shift + G

合理的建立標題,有助於目錄的生成

直接輸入1次#,並按下space後,將生成1級標題。
輸入2次#,並按下space後,將生成2級標題。
以此類推,我們支援6級標題。有助於使用TOC語法後生成一個完美的目錄。

如何改變文字的樣式

強調文字 強調文字

加粗文字 加粗文字

標記文字

刪除文字

引用文字

H2O is是液體。

210 運算結果是 1024.

插入連結與圖片

連結: link.

圖片: Alt

帶尺寸的圖片: Alt

當然,我們為了讓使用者更加便捷,我們增加了圖片拖拽功能。

如何插入一段漂亮的程式碼片

部落格設定頁面,選擇一款你喜歡的程式碼片高亮樣式,下面展示同樣高亮的 程式碼片.

// An highlighted block var foo = 'bar'; 

生成一個適合你的列表

  • 專案
    • 專案
      • 專案
  1. 專案1
  2. 專案2
  3. 專案3
  • 計劃任務
  • 完成任務

建立一個表格

一個簡單的表格是這麼建立的:

專案 Value
電腦 $1600
手機 $12
導管 $1

設定內容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文字居中 第二列文字居右 第三列文字居左

SmartyPants

SmartyPants將ASCII標點字元轉換為“智慧”印刷標點HTML實體。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

建立一個自定義列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何建立一個註腳

一個具有註腳的文字。2

註釋也是必不可少的

Markdown將文字轉換為 HTML

KaTeX數學公式

您可以使用渲染LaTeX數學表示式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n 1 ) ! n N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通過尤拉積分

Γ ( z ) = 0 t z 1 e t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

你可以找到更多關於的資訊 LaTeX 數學表示式here.

新的甘特圖功能,豐富你的文章

gantt
        dateFormat  YYYY-MM-DD
        title Adding GANTT diagram functionality to mermaid
        section 現有任務
        已完成               :done,    des1, 2014-01-06,2014-01-08
        進行中               :active,  des2, 2014-01-09, 3d
        計劃一               :         des3, after des2, 5d
        計劃二               :         des4, after des3, 5d
  • 關於 甘特圖 語法,參考 這兒,

UML 圖表

可以使用UML圖表進行渲染。 Mermaid. 例如下面產生的一個序列圖::

這將產生一個流程圖。:

  • 關於 Mermaid 語法,參考 這兒,

FLowchart流程圖

我們依舊會支援flowchart的流程圖:

  • 關於 Flowchart流程圖 語法,參考 這兒.

匯出與匯入

匯出

如果你想嘗試使用此編輯器, 你可以在此篇文章任意編輯。當你完成了一篇文章的寫作, 在上方工具欄找到 文章匯出 ,生成一個.md檔案或者.html檔案進行本地儲存。

匯入

如果你想載入一篇你寫過的.md檔案或者.html檔案,在上方工具欄可以選擇匯入功能進行對應副檔名的檔案匯入,
繼續你的創作。


  1. mermaid語法說明 ↩︎

  2. 註腳的解釋 ↩︎