欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android編程UI設(shè)計之GridView和ImageView的用法

 更新時間:2016年01月06日 11:11:19   作者:Icansoft  
這篇文章主要介紹了Android編程UI設(shè)計之GridView和ImageView的用法,結(jié)合實例形式較為詳細的分析了Android中GridView和ImageView組件的相關(guān)方法使用技巧,需要的朋友可以參考下

本文實例講述了Android編程UI設(shè)計之GridView和ImageView的用法。分享給大家供大家參考,具體如下:

GridView: A view that shows items in two-dimensional scrolling grid. The items in the grid come from the ListAdapter associated with this view. 簡單說,GridView就是我們資源管理器平常見到的一個個文件的icon顯示方式。

上面提及到了,GridView的Item是來自ListAdapter的,所以一般在Activity的onCreate使用GridView的代碼:

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.grid_2);
  GridView g = (GridView) findViewById(R.id.myGrid);
  g.setAdapter(new ImageAdapter(this));
} 

而ImageAdapter一般是extends BaseAdapter。BaseAdapter是implements ListAdapter SpinnerAdapter,但很多時候自定義的Adapter都是override ListAdapter的父類Adapter接口里面的方法:

int     getCount()               獲取當(dāng)前Adapter的Items數(shù)目
Object getItem(int position)     獲取相應(yīng)position的Item
long     getItemId(int position)  獲取相應(yīng)position的Item在List中的row id
View    getView(int position, View convertView, ViewGroup parent) 獲取在指定position所要顯示的data的View

這些方法函數(shù)和swing的差不多,都是基于MVC。大概原理過程是這樣的:程序需要顯示GridView,那么要把data一個一個地顯示出來是通過一個for循環(huán),首先call Adapter.getCount()得到有多少個data,然后position++地getItem,getView得到要顯示的view,這樣子逐一地顯示出來!

下面是官方sample里面的Photo Grid的例子,本人省略了某些代碼:

public class ImageAdapter extends BaseAdapter {
  public ImageAdapter(Context c) {
    mContext = c;
  }
  public int getCount() {
    return mThumbIds.length;
  }
  public Object getItem(int position) {
    return position;
  }
  public long getItemId(int position) {
    return position;
  }
  public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if (convertView == null) {
      imageView = new ImageView(mContext);
      imageView.setLayoutParams(new GridView.LayoutParams(45, 45));//設(shè)置ImageView寬高
      imageView.setAdjustViewBounds(false);
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
      imageView.setPadding(8, 8, 8, 8);
    } else {
      imageView = (ImageView) convertView;
    }
    imageView.setImageResource(mThumbIds[position]);
    return imageView;
  }
  private Context mContext;
  private Integer[] mThumbIds = {
      R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
      R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
      R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
      R.drawable.sample_thumb_6, R.drawable.sample_thumb_7
  };
}

留意getView里面的代碼,要判斷convertView是否為null,以便重用,減少對象的創(chuàng)建,減少內(nèi)存占用。

XML布局文件內(nèi)容,原來就只是指明GridView:

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

可以看到getView,和ImageView是重點,影響圖片的顯示效果。而且發(fā)現(xiàn)列數(shù)是不確定的,取決于每個ImageView的寬度和屏幕的寬度。接下來看看ImageView。

ImageView:Displays an arbitrary image, such as an icon. The ImageView class can load images from various sources (such as resources or content providers), takes care of computing its measurement from the image so that it can be used in any layout manager, and provides various display options such as scaling and tintingImageView就是用來顯示Image,icon的。

這里我們重點理解ImageView的屬性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)。android:scaleType是控制圖片如何resized/moved來匹對ImageView的size。ImageView.ScaleType / android:scaleType值的意義區(qū)別:

CENTER /center  按圖片的原來size居中顯示,當(dāng)圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示
CENTER_CROP / centerCrop  按比例擴大圖片的size居中顯示,使得圖片長(寬)等于或大于View的長(寬)
CENTER_INSIDE / centerInside  將圖片的內(nèi)容完整居中顯示,通過按比例縮小或原來的size使得圖片長/寬等于或小于View的長/寬
FIT_CENTER / fitCenter  把圖片按比例擴大/縮小到View的寬度,居中顯示
FIT_END / fitEnd   把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置
FIT_START / fitStart  把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置
FIT_XY / fitXY  把圖片不按比例擴大/縮小到View的大小顯示
MATRIX / matrix 用矩陣來繪制

一開始我不明白MATRIX矩陣,網(wǎng)上搜索后發(fā)現(xiàn)原來MATRIX矩陣可以動態(tài)縮小放大圖片來顯示,這里不展開深入的了解,只是貼出相關(guān)語句,縮小圖片:

//獲得Bitmap的高和寬
int bmpWidth=bmp.getWidth();
int bmpHeight=bmp.getHeight();
//設(shè)置縮小比例
double scale=0.8;
//計算出這次要縮小的比例
scaleWidth=(float)(scaleWidth*scale);
scaleHeight=(float)(scaleHeight*scale);
//產(chǎn)生resize后的Bitmap對象
Matrix matrix=new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);

應(yīng)用ImageView的例子很多,看看上次FrameLayout里面的:

<ImageView
  android:id="@+id/image"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:scaleType="center"
  android:src="@drawable/candle"
  />

這里注意一點,我發(fā)現(xiàn)Drawable文件夾里面的圖片命名是不能大寫的。

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

  • Android自定義控件之組合控件學(xué)習(xí)筆記分享

    Android自定義控件之組合控件學(xué)習(xí)筆記分享

    這篇文章主要為大家分享了Android自定義控件之組合控件學(xué)習(xí)筆記,具有一定的實用性和參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Flutter實現(xiàn)網(wǎng)絡(luò)請求的方法示例

    Flutter實現(xiàn)網(wǎng)絡(luò)請求的方法示例

    這篇文章主要介紹了Flutter實現(xiàn)網(wǎng)絡(luò)請求的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Android軟鍵盤遮擋的四種完美解決方案

    Android軟鍵盤遮擋的四種完美解決方案

    輸入密碼時輸入框被系統(tǒng)鍵盤遮擋了,大大降低了用戶操作體驗,在開發(fā)中如何解決軟鍵盤遮擋問題呢,下面小編給大家?guī)砹怂姆Nandroid軟鍵盤遮擋問題,感興趣的朋友一起學(xué)習(xí)吧
    2016-10-10
  • 詳解Android中點擊事件的幾種實現(xiàn)方式

    詳解Android中點擊事件的幾種實現(xiàn)方式

    本篇文章主要介紹了Android中點擊事件的實現(xiàn)方式,點擊事件的實現(xiàn)分為3中,詳細的介紹了三種的用法,有興趣的可以了解一下。
    2016-12-12
  • Ubuntu 14.04下創(chuàng)建Genymotion安卓虛擬機的步驟詳解

    Ubuntu 14.04下創(chuàng)建Genymotion安卓虛擬機的步驟詳解

    Android 模擬器一直以速度奇慢無比著稱,基本慢到不可用。本文介紹我一直在用的 Genymotion,速度不亞于真機。而且功能齊全,使用簡單。下面這篇文章主要介紹了Ubuntu 14.04下創(chuàng)建Genymotion虛擬機的步驟,需要的朋友可以參考下。
    2017-03-03
  • Android中g(shù)ravity與layout_gravity的使用區(qū)別分析

    Android中g(shù)ravity與layout_gravity的使用區(qū)別分析

    本篇文章介紹了,在Android中g(shù)ravity與layout_gravity的使用區(qū)別分析。需要的朋友參考下
    2013-04-04
  • Android仿微信右滑返回功能的實例代碼

    Android仿微信右滑返回功能的實例代碼

    這篇文章主要介紹了Android仿微信右滑返回功能的實例代碼,需要的朋友可以參考下
    2017-09-09
  • android幾種不同對話框的實現(xiàn)方式

    android幾種不同對話框的實現(xiàn)方式

    這篇文章介紹了android幾種不同對話框的實現(xiàn),主要包括:1、顯示提示消息的對話框.2、簡單列表項對話框。3、單選列表項對話框。4、多選列表對話框。5、自定義列表項對話框。6、自定義View的對話框,需要的朋友可以參考下
    2015-08-08
  • Android使用Dialog風(fēng)格彈出框的Activity

    Android使用Dialog風(fēng)格彈出框的Activity

    這篇文章主要為大家詳細介紹了Android使用Dialog風(fēng)格彈出框的Activity,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 安卓自定義流程進度圖控件實例代碼

    安卓自定義流程進度圖控件實例代碼

    本篇文章主要介紹了安卓自定義流程進度圖控件實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論