`

Gallery和GridView浅析、宫格图的实现

阅读更多

转载自 http://liangruijun.blog.51cto.com/3061169/647355

一.Gallery的简介

    Gallery (画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息。Gallery还可以和ImageSwitcher组件结合使用来实现一个通过缩略图来浏览图片的效果。

Gallery常用的XML属性

属性名称

描述

android:animationDuration

设置布局变化时动画的转换所需的时间(毫秒级)。仅在动画开始时计时。该值必须是整数,比如:100

android:gravity

指定在对象的XY 轴上如何放置内容。指定一下常量中的一个或多个(使用 “| ”分割)

Constant

Value

Description

top

0x30

紧靠容器顶端,不改变其大小

bottom

0x50

紧靠容器底部,不改变其大小

left

0x03

紧靠容器左侧,不改变其大小

right

0x05

紧靠容器右侧,不改变其大小

center_vertical

0x10

垂直居中,不改变其大小

fill_vertical

0x70

垂直方向上拉伸至充满容器

center_horizontal

0x01

水平居中,不改变其大小

Fill_horizontal

0x07

水平方向上拉伸使其充满容器

center

0x11

居中对齐,不改变其大小

fill

0x77

在水平和垂直方向上拉伸,使其充满容器

clip_vertical

0x80

垂直剪切(当对象边缘超出容器的时候,将上下边缘超出的部分剪切掉)

clip_horizontal

0x08

水平剪切(当对象边缘超出容器的时候,将左右边缘超出的部分剪切掉)

 

android:spacing

图片之间的间距

android:unselectedAlpha

设置未选中的条目的透明度(Alpha) 。该值必须是float 类型,比如:“1.2 ”。

首先介绍Gallery单独使用的例子:

MainActivity.java

  1. package  com.android.gallerydemo;  
  2.  
  3. import  android.app.Activity;  
  4. import  android.content.Context;  
  5. import  android.os.Bundle;  
  6. import  android.view.View;  
  7. import  android.view.ViewGroup;  
  8. import  android.widget.AdapterView;  
  9. import  android.widget.AdapterView.OnItemClickListener;  
  10. import  android.widget.BaseAdapter;  
  11. import  android.widget.Gallery;  
  12. import  android.widget.ImageView;  
  13. import  android.widget.Toast;  
  14.  
  15. public   class  MainActivity  extends  Activity {  
  16.  
  17.     private  Gallery gallery;  
  18.      @Override  
  19.      public   void  onCreate(Bundle savedInstanceState) {  
  20.  
  21.          super .onCreate(savedInstanceState);  
  22.         setContentView(R.layout.main);  
  23.         gallery = (Gallery)findViewById(R.id.gallery);  
  24.          //设置图片适配器  
  25.         gallery.setAdapter( new  ImageAdapter( this ));  
  26.          //设置监听器  
  27.         gallery.setOnItemClickListener( new  OnItemClickListener() {  
  28.           @Override  
  29.           public   void  onItemClick(AdapterView<?>parent, View v,  int  position,  long  id) {  
  30.             Toast.makeText(MainActivity. this "点击了第" +(position+ 1 )+ "张图片" , Toast.LENGTH_LONG).show();  
  31.          }  
  32.      });  
  33.     }  
  34. }  
  35.  
  36. class  ImageAdapter  extends  BaseAdapter{  
  37.    //声明Context   
  38.    private  Context context;  
  39.    //图片源数组  
  40.    private  Integer[] imageInteger={  
  41.          R.drawable.pic1,  
  42.          R.drawable.pic2,  
  43.          R.drawable.pic3,  
  44.          R.drawable.pic4,  
  45.          R.drawable.pic5,  
  46.          R.drawable.pic6,  
  47.          R.drawable.pic7  
  48.   };  
  49.     
  50.    //声明 ImageAdapter  
  51.    public  ImageAdapter(Context c){  
  52.      context = c;  
  53.   }  
  54.  
  55.    @Override  
  56.    //获取图片的个数  
  57.    public   int  getCount() {  
  58.       return  imageInteger.length;  
  59.   }  
  60.  
  61.    @Override  
  62.    //获取图片在库中的位置  
  63.    public  Object getItem( int  position) {  
  64.  
  65.       return  position;  
  66.   }  
  67.  
  68.    @Override  
  69.    //获取图片在库中的位置  
  70.    public   long  getItemId( int  position) {  
  71.       // TODO Auto-generated method stub  
  72.       return  position;  
  73.  }  
  74.  
  75.    @Override  
  76.    public  View getView( int  position, View convertView, ViewGroup parent) {  
  77.  
  78.      ImageView imageView =  new  ImageView(context);  
  79.       //给ImageView设置资源  
  80.      imageView.setImageResource(imageInteger[position]);  
  81.       //设置比例类型  
  82.      imageView.setScaleType(ImageView.ScaleType.FIT_XY);  
  83.       //设置布局 图片128x192显示  
  84.      imageView.setLayoutParams( new  Gallery.LayoutParams( 128 192 ));  
  85.       return  imageView;  
  86.   }  
  87. }  
  88.  
  89.  

main.xml

  1. <? xml   version = "1.0"   encoding = "utf-8" ?>  
  2. < Gallery   xmlns:android = "http://schemas.android.com/apk/res/android"    
  3.        android:id = "@+id/gallery"          
  4.        android:layout_width = "fill_parent"  
  5.        android:layout_height = "wrap_content"  
  6.        android:gravity = "center_vertical"  
  7.        android:background = "?android:galleryItemBackground"  
  8. />  
  9.  

效果图:

 Gallery和ImageSwitcher组件结合使用的例子:

MainActivity.java

  1. package  com.android.gallerytest;  
  2.  
  3. import  android.app.Activity;  
  4. import  android.content.Context;  
  5. import  android.os.Bundle;  
  6. import  android.view.View;  
  7. import  android.view.ViewGroup;  
  8. import  android.view.Window;  
  9. import  android.view.animation.AnimationUtils;  
  10. import  android.widget.AdapterView;  
  11. import  android.widget.BaseAdapter;  
  12. import  android.widget.Gallery;  
  13. import  android.widget.ImageSwitcher;  
  14. import  android.widget.ImageView;  
  15. import  android.widget.AdapterView.OnItemSelectedListener;  
  16. import  android.widget.Gallery.LayoutParams;  
  17. import  android.widget.ViewSwitcher.ViewFactory;  
  18.  
  19. public   class  MainActivity  extends  Activity  implements  OnItemSelectedListener,  
  20.         ViewFactory {  
  21.       
  22.      private  ImageSwitcher mSwitcher;  
  23.      //大图片对应的缩略图源数组  
  24.      private  Integer[] mThumbIds = { R.drawable.sample_thumb_0,  
  25.             R.drawable.sample_thumb_1, R.drawable.sample_thumb_2,  
  26.             R.drawable.sample_thumb_3, R.drawable.sample_thumb_4,  
  27.             R.drawable.sample_thumb_5, R.drawable.sample_thumb_6,  
  28.             R.drawable.sample_thumb_7 };  
  29.      //大图片源数组  
  30.      private  Integer[] mImageIds = { R.drawable.sample_0, R.drawable.sample_1,  
  31.             R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4,  
  32.             R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 };  
  33.  
  34.      @Override  
  35.      public   void  onCreate(Bundle savedInstanceState) {  
  36.          super .onCreate(savedInstanceState);  
  37.          //设置窗口无标题  
  38.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  39.         setContentView(R.layout.main);  
  40.         mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);  
  41.          //注意在使用一个ImageSwitcher之前,  
  42.          //一定要调用setFactory方法,要不setImageResource这个方法会报空指针异常。  
  43.         mSwitcher.setFactory( this );  
  44.          //设置动画效果  
  45.         mSwitcher.setInAnimation(AnimationUtils.loadAnimation( this ,  
  46.                 android.R.anim.fade_in));  
  47.         mSwitcher.setOutAnimation(AnimationUtils.loadAnimation( this ,  
  48.                 android.R.anim.fade_out));  
  49.  
  50.         Gallery g = (Gallery) findViewById(R.id.gallery);  
  51.           
  52.          //添加OnItemSelectedListener监听器  
  53.         g.setAdapter( new  ImageAdapter( this ));  
  54.         g.setOnItemSelectedListener( this );  
  55.  
  56.     }  
  57.      //创建内部类ImageAdapter  
  58.      public   class  ImageAdapter  extends  BaseAdapter {  
  59.          public  ImageAdapter(Context c) {  
  60.             mContext = c;  
  61.         }  
  62.          public   int  getCount() {  
  63.              return  mThumbIds.length;  
  64.         }  
  65.          public  Object getItem( int  position) {  
  66.              return  position;  
  67.         }  
  68.          public   long  getItemId( int  position) {  
  69.              return  position;  
  70.         }  
  71.          public  View getView( int  position, View convertView, ViewGroup parent) {  
  72.             ImageView i =  new  ImageView(mContext);  
  73.  
  74.             i.setImageResource(mThumbIds[position]);  
  75.              //设置边界对齐  
  76.             i.setAdjustViewBounds( true );  
  77.              //设置布局参数  
  78.             i.setLayoutParams( new  Gallery.LayoutParams(  
  79.                     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  
  80.              //设置背景资源  
  81.             i.setBackgroundResource(R.drawable.picture_frame);  
  82.              return  i;  
  83.         }  
  84.          private  Context mContext;  
  85.     }  
  86.  
  87.      @Override  
  88.      //实现onItemSelected()方法,更换图片  
  89.      public   void  onItemSelected(AdapterView<?> adapter, View v,  int  position,  
  90.              long  id) {  
  91.          //设置图片资源  
  92.         mSwitcher.setImageResource(mImageIds[position]);  
  93.     }  
  94.  
  95.      @Override  
  96.      public   void  onNothingSelected(AdapterView<?> arg0) {  
  97.  
  98.     }  
  99.  
  100.      @Override  
  101.      //实现makeView()方法,为ImageView设置布局格式  
  102.      public  View makeView() {  
  103.         ImageView i =  new  ImageView( this );  
  104.          //设置背景颜色  
  105.         i.setBackgroundColor( 0xFF000000 );  
  106.          //设置比例类型  
  107.         i.setScaleType(ImageView.ScaleType.FIT_CENTER);  
  108.          //设置布局参数  
  109.         i.setLayoutParams( new  ImageSwitcher.LayoutParams(  
  110.                 LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
  111.          return  i;  
  112.     }  

 main.xml

  1. <? xml   version = "1.0"   encoding = "utf-8" ?>  
  2. < RelativeLayout   xmlns:android = "http://schemas.android.com/apk/res/android"    
  3.      android:layout_width = "fill_parent"    
  4.      android:layout_height = "fill_parent"  
  5.      >       
  6.      < ImageSwitcher    
  7.          android:id = "@+id/switcher"  
  8.          android:layout_width = "fill_parent"  
  9.          android:layout_height = "fill_parent"  
  10.          android:layout_alignParentTop = "true"  
  11.          android:layout_alignParentLeft = "true"  
  12.          />      
  13.      < Gallery  
  14.          android:id = "@+id/gallery"  
  15.          android:background = "#55000000"  
  16.          android:layout_width = "fill_parent"  
  17.          android:layout_height = "60dp"  
  18.          android:layout_alignParentBottom = "true"  
  19.          android:layout_alignParentLeft = "true"  
  20.          android:gravity = "center_vertical"  
  21.          android:spacing = "16dp"  
  22.          />  
  23. </ RelativeLayout >  
  24.      

效果图:

 二.GridView的简介

    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系统自带的图片),第三个是显示自定义的图片文字。前 面两个例子的实现都不是很难,第三个例子的实现有些复杂,学习GridView的时候,就想着能不能自定义自己喜欢的图片加上文字,在网上找些资料,一般 都是第二个例子的形式的,最后在视频学习上找到了能实现自定义自己的图片的例子。自己就照着例子去学习,修改成了第三个例子。

第一个例子:

MainActivity.java

  1. package com.android.gridview.activity;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.AdapterView;
  8. import android.widget.AdapterView.OnItemClickListener;
  9. import android.widget.BaseAdapter;
  10. import android.widget.GridView;
  11. import android.widget.ImageView;
  12. import android.widget.Toast;
  13. public class MainActivity extends Activity {
  14. @Override
  15. public void onCreate(Bundle savedInstanceState) {
  16. super .onCreate(savedInstanceState);
  17. setContentView(R.layout.main);
  18. GridView gv = (GridView)findViewById(R.id.GridView1);
  19. //为GridView设置适配器
  20. gv.setAdapter( new MyAdapter( this ));
  21. //注册监听事件
  22. gv.setOnItemClickListener( new OnItemClickListener()
  23. {
  24. public void onItemClick(AdapterView<?> parent, View v, int position, long id)
  25. {
  26. Toast.makeText(MainActivity. this , "pic" + position, Toast.LENGTH_SHORT).show();
  27. }
  28. });
  29. }
  30. }
  31. //自定义适配器
  32. class MyAdapter extends BaseAdapter{
  33. //上下文对象
  34. private Context context;
  35. //图片数组
  36. private Integer[] imgs = {
  37. R.drawable.pic0, R.drawable.pic1, R.drawable.pic2,
  38. R.drawable.pic3, R.drawable.pic4, R.drawable.pic5,
  39. R.drawable.pic6, R.drawable.pic7, R.drawable.pic8,
  40. R.drawable.pic0, R.drawable.pic1, R.drawable.pic2,
  41. R.drawable.pic3, R.drawable.pic4, R.drawable.pic5,
  42. R.drawable.pic6, R.drawable.pic7, R.drawable.pic8,
  43. };
  44. MyAdapter(Context context){
  45. this .context = context;
  46. }
  47. public int getCount() {
  48. return imgs.length;
  49. }
  50. public Object getItem( int item) {
  51. return item;
  52. }
  53. public long getItemId( int id) {
  54. return id;
  55. }
  56. //创建View方法
  57. public View getView( int position, View convertView, ViewGroup parent) {
  58. ImageView imageView;
  59. if (convertView == null ) {
  60. imageView = new ImageView(context);
  61. imageView.setLayoutParams( new GridView.LayoutParams( 75 , 75 )); //设置ImageView对象布局
  62. imageView.setAdjustViewBounds( false ); //设置边界对齐
  63. imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); //设置刻度的类型
  64. imageView.setPadding( 8 , 8 , 8 , 8 ); //设置间距
  65. }
  66. else {
  67. imageView = (ImageView) convertView;
  68. }
  69. imageView.setImageResource(imgs[position]); //为ImageView设置图片资源
  70. return imageView;
  71. }
  72. }

main.xml

  1. <? xml version = "1.0" encoding = "utf-8" ?>
  2. < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
  3. android:orientation = "vertical"
  4. android:layout_width = "fill_parent"
  5. android:layout_height = "fill_parent"
  6. >
  7. < GridView
  8. android:id = "@+id/GridView1"
  9. android:layout_width = "wrap_content"
  10. android:layout_height = "wrap_content"
  11. android:columnWidth = "90dp"
  12. android:numColumns = "3"
  13. android:verticalSpacing = "10dp"
  14. android:horizontalSpacing = "10dp"
  15. android:stretchMode = "columnWidth"
  16. android:gravity = "center"
  17. />
  18. </ LinearLayout >

效果图:

 

第二个例子:

MainActivity.java

  1. package com.android.gridview2.activity;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import android.app.Activity;
  7. import android.os.Bundle;
  8. import android.widget.GridView;
  9. import android.widget.SimpleAdapter;
  10. public class MainActivity extends Activity {
  11. private GridView gv;
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. // TODO Auto-generated method stub
  15. super .onCreate(savedInstanceState);
  16. setContentView(R.layout.gridview);
  17. //准备要添加的数据条目
  18. List<Map<String, Object>> items = new ArrayList<Map<String,Object>>();
  19. for ( int i = 0 ; i < 9 ; i++) {
  20. Map<String, Object> item = new HashMap<String, Object>();
  21. item.put( "imageItem" , R.drawable.icon); //添加图像资源的ID
  22. item.put( "textItem" , "icon" + i); //按序号添加ItemText
  23. items.add(item);
  24. }
  25. //实例化一个适配器
  26. SimpleAdapter adapter = new SimpleAdapter( this ,
  27. items,
  28. R.layout.grid_item,
  29. new String[]{ "imageItem" , "textItem" },
  30. new int []{R.id.image_item, R.id.text_item});
  31. //获得GridView实例
  32. gv = (GridView)findViewById(R.id.mygridview);
  33. //为GridView设置适配器
  34. gv.setAdapter(adapter);
  35. }
  36. }

gridview.xml

  1. <? xml version = "1.0" encoding = "utf-8" ?>
  2. < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
  3. android:layout_width = "wrap_content"
  4. android:layout_height = "wrap_content"
  5. >
  6. < GridView
  7. android:id = "@+id/mygridview"
  8. android:numColumns = "3"
  9. android:gravity = "center_horizontal"
  10. android:layout_width = "wrap_content"
  11. android:layout_height = "wrap_content"
  12. android:stretchMode = "columnWidth"
  13. />
  14. </ LinearLayout >

grid_item.xml

  1. <? xml version = "1.0" encoding = "utf-8" ?>
  2. < RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
  3. android:id = "@+id/RelativeLayout1"
  4. android:layout_width = "wrap_content"
  5. android:layout_height = "fill_parent"
  6. android:paddingBottom = "6dip"
  7. >
  8. < ImageView
  9. android:id = "@+id/image_item"
  10. android:layout_width = "wrap_content"
  11. android:layout_height = "wrap_content"
  12. android:layout_centerHorizontal = "true"
  13. />
  14. < TextView
  15. android:id = "@+id/text_item"
  16. android:layout_below = "@+id/image_item"
  17. android:layout_height = "wrap_content"
  18. android:layout_width = "wrap_content"
  19. android:layout_centerHorizontal = "true"
  20. />
  21. </ RelativeLayout >

效果图:

 

第三个例子:

MainActivity.java

  1. package com.android.gridview3;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.app.Activity;
  5. import android.content.Context;
  6. import android.os.Bundle;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.AdapterView;
  11. import android.widget.BaseAdapter;
  12. import android.widget.GridView;
  13. import android.widget.ImageView;
  14. import android.widget.TextView;
  15. import android.widget.Toast;
  16. import android.widget.AdapterView.OnItemClickListener;
  17. public class MainActivity extends Activity
  18. {
  19. private GridView gridView;
  20. //图片的文字标题
  21. private String[] titles = new String[]
  22. { "pic1" , "pic2" , "pic3" , "pic4" , "pic5" , "pic6" , "pic7" , "pic8" , "pic9" };
  23. //图片ID数组
  24. private int [] images = new int []{
  25. R.drawable.pic1, R.drawable.pic2, R.drawable.pic3,
  26. R.drawable.pic4, R.drawable.pic5, R.drawable.pic6,
  27. R.drawable.pic7, R.drawable.pic8,R.drawable.pic9
  28. };
  29. @Override
  30. public void onCreate(Bundle savedInstanceState){
  31. super .onCreate(savedInstanceState);
  32. setContentView(R.layout.main);
  33. gridView = (GridView) findViewById(R.id.gridview);
  34. PictureAdapter adapter = new PictureAdapter(titles, images, this );
  35. gridView.setAdapter(adapter);
  36. gridView.setOnItemClickListener( new OnItemClickListener()
  37. {
  38. public void onItemClick(AdapterView<?> parent, View v, int position, long id)
  39. {
  40. Toast.makeText(MainActivity. this , "pic" + (position+ 1 ), Toast.LENGTH_SHORT).show();
  41. }
  42. });
  43. }
  44. }
  45. //自定义适配器
  46. class PictureAdapter extends BaseAdapter{
  47. private LayoutInflater inflater;
  48. private List<Picture> pictures;
  49. public PictureAdapter(String[] titles, int [] images, Context context)
  50. {
  51. super ();
  52. pictures = new ArrayList<Picture>();
  53. inflater = LayoutInflater.from(context);
  54. for ( int i = 0 ; i < images.length; i++)
  55. {
  56. Picture picture = new Picture(titles[i], images[i]);
  57. pictures.add(picture);
  58. }
  59. }
  60. @Override
  61. public int getCount()
  62. {
  63. if ( null != pictures)
  64. {
  65. return pictures.size();
  66. } else
  67. {
  68. return 0 ;
  69. }
  70. }
  71. @Override
  72. public Object getItem( int position)
  73. {
  74. return pictures.get(position);
  75. }
  76. @Override
  77. public long getItemId( int position)
  78. {
  79. return position;
  80. }
  81. @Override
  82. public View getView( int position, View convertView, ViewGroup parent)
  83. {
  84. ViewHolder viewHolder;
  85. if (convertView == null )
  86. {
  87. convertView = inflater.inflate(R.layout.picture_item, null );
  88. viewHolder = new ViewHolder();
  89. viewHolder.title = (TextView) convertView.findViewById(R.id.title);
  90. viewHolder.image = (ImageView) convertView.findViewById(R.id.image);
  91. convertView.setTag(viewHolder);
  92. } else
  93. {
  94. viewHolder = (ViewHolder) convertView.getTag();
  95. }
  96. viewHolder.title.setText(pictures.get(position).getTitle());
  97. viewHolder.image.setImageResource(pictures.get(position).getImageId());
  98. return convertView;
  99. }
  100. }
  101. class ViewHolder
  102. {
  103. public TextView title;
  104. public ImageView image;
  105. }
  106. class Picture
  107. {
  108. private String title;
  109. private int imageId;
  110. public Picture()
  111. {
  112. super ();
  113. }
  114. public Picture(String title, int imageId)
  115. {
  116. super ();
  117. this .title = title;
  118. this .imageId = imageId;
  119. }
  120. public String getTitle()
  121. {
  122. return title;
  123. }
  124. public void setTitle(String title)
  125. {
  126. this .title = title;
  127. }
  128. public int getImageId()
  129. {
  130. return imageId;
  131. }
  132. public void setImageId( int imageId)
  133. {
  134. this .imageId = imageId;
  135. }
  136. }

main.xml

  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:columnWidth = "90dp"
  7. android:numColumns = "auto_fit"
  8. android:verticalSpacing = "10dp"
  9. android:horizontalSpacing = "10dp"
  10. android:stretchMode = "columnWidth"
  11. android:gravity = "center"
  12. />

picture_item.xml

  1. <? xml version = "1.0" encoding = "utf-8" ?>
  2. < LinearLayout
  3. xmlns:android = "http://schemas.android.com/apk/res/android"
  4. android:id = "@+id/root"
  5. android:orientation = "vertical"
  6. android:layout_width = "wrap_content"
  7. android:layout_height = "wrap_content"
  8. android:layout_marginTop = "5dp"
  9. >
  10. < ImageView
  11. android:id = "@+id/image"
  12. android:layout_width = "100dp"
  13. android:layout_height = "150dp"
  14. android:layout_gravity = "center"
  15. android:scaleType = "fitXY"
  16. android:padding = "4dp"
  17. />
  18. < TextView
  19. android:id = "@+id/title"
  20. android:layout_width = "wrap_content"
  21. android:layout_height = "wrap_content"
  22. android:layout_gravity = "center"
  23. android:gravity = "center_horizontal"
  24. />
  25. </ LinearLayout >

效果图:

分享到:
评论

相关推荐

    Gallery和GridView浅析

    【Gallery和GridView浅析】 Gallery和GridView是Android开发中用于展示数据的两种控件,它们在界面设计中有着广泛的应用,特别是在图片展示和选择场景下。本文将详细解析这两个控件的特点、用法以及相关属性。 一...

    ViewPager+GridView实现宫格横向滑动切换

    本篇将深入探讨如何利用`ViewPager`和`GridView`来实现宫格横向滑动切换的分页效果。 首先,`ViewPager`是Android SDK中的一个强大的组件,它允许用户左右滑动来切换不同的页面,通常用于实现类似Tab布局的效果。`...

    Android开发学习笔记 Gallery和GridView浅析

    Android开发中的`Gallery`和`GridView`都是用于展示数据的视图组件,常用于创建图像或者项目的列表。在本文中,我们将深入探讨这两个组件的特性和使用方法。 ### Gallery组件详解 `Gallery`是一个水平滚动的视图,...

    Android GridView宫格视图实践

    ### Android GridView 宫格视图实践详解 #### 一、GridView 概述 在Android开发中,`GridView`是一种常见的用户界面组件,用于显示网格形式的数据列表,如相册、商品展示等场景。通过`GridView`可以很容易地实现宫...

    Android 滑动效果 Gallery + GridView

    本主题主要聚焦于两种常见的滑动组件:Gallery和GridView,它们都是Android SDK中内置的视图组件,常用于展示多张图片或者项目列表。下面我们将深入探讨这两个组件的特性、用法以及如何在实际项目中实现它们的滑动...

    7-1-GridView-9宫格.rar

    要实现9宫格,我们首先需要一个GridView实例,并在XML布局文件中定义它的属性,如列数(`android:numColumns="3"`)和其他布局参数。 ```xml &lt;GridView android:id="@+id/gridView" android:layout_width="match_...

    Gallery+GridView使用的demo

    这种设计可以用于应用中的相册功能,用户可以在`Gallery`中预览缩略图,然后点击选择查看完整的`GridView`图片集。 实现这个功能通常需要以下步骤: 1. **创建适配器**:为`GridView`创建一个自定义的`BaseAdapter...

    Android GridView宫格视图实践项目(资源)

    总之,“Android GridView宫格视图实践项目”涵盖了Android开发中使用GridView进行UI设计的基本流程和技术要点,通过实际操作,开发者可以更好地理解和掌握GridView的使用,从而创建出美观且功能丰富的Android应用...

    Android之Gallery和GridView两种方式与ImageSwitcher实现带预览的和幻灯片方式的两种图片浏览器

    具体说明可以参考博客:我的Android进阶之旅------&gt;Android之Gallery和GridView两种方式与ImageSwitcher实现带预览的和幻灯片方式的两种图片浏览器 博客地址:...

    GridView实现Gallery效果

    在Android开发中,GridView是一种常见的布局管理器,它允许我们以网格的形式展示数据集,而Gallery则是一个可以水平滚动的视图,常用于图片或项目的循环浏览。在某些情况下,Gallery的效果可能不尽如人意,这时...

    ListView之+GridView+Gallery图片计时滚动

    在Android开发中,...总的来说,"ListView之+GridView+Gallery图片计时滚动"这个主题涵盖了Android UI开发中的基础组件和常见的滚动效果实现,对于Android开发者来说,掌握这些知识将有助于构建更丰富的用户界面。

    gridView 实现gallery滑动

    在某些场景下,开发者可能希望结合GridView和Gallery的功能,实现一个既具有网格布局又能横向平滑滑动的效果。在本篇文章中,我们将深入探讨如何在Android中使用GridView来实现类似Gallery的滑动体验,并防止滑动过...

    GridView拖拽Item完美实现

    本篇文章将深入探讨如何在Android中实现GridView的拖拽功能,同时确保在拖拽过程中保持流畅的滚动效果。 首先,我们要了解 GridView 的基本用法。GridView 是继承自 AbsListView 的,它通过 adapter 来填充数据,...

    GridView实现多张图片被选中的效果

    综上所述,实现GridView多张图片选中效果主要涉及Adapter的编写、事件监听、状态保存和UI反馈等多个方面。通过合理的设计和优化,可以创建出流畅且功能完善的图片选择界面。在实际项目中,根据需求还可以扩展其他...

    GridView加载大量图片卡的问题

    然而,当GridView需要加载大量图片时,由于内存限制和性能问题,可能会出现明显的卡顿现象,严重影响用户体验。为了解决这个问题,我们可以采用异步加载图片的方法。 首先,理解问题的根源是关键。Android系统在...

    android GridView+ViewFlipper实现图片浏览

    本教程将详细介绍如何利用GridView和ViewFlipper来实现图片浏览功能。 首先,`GridView`是Android中的一个控件,它将子视图排列成网格形式。我们可以自定义每行的列数,并且每个子视图都可以通过适配器(Adapter)...

    GridView动态添加图片

    在本项目"GridView动态添加图片"中,开发者通过 APK 的形式实现了一个功能,允许用户动态地向 GridView 添加图片,这些图片可以来自手机的即时拍照或从手机的相册(画廊)选择。下面将详细介绍这一功能的实现原理和...

    GridView异步加载网络图片

    在Android开发中,...通过以上步骤和技巧,你可以在GridView中实现高效且流畅的网络图片异步加载,从而提升应用的整体用户体验。在实际开发过程中,不断学习和适应新的工具和技术,以适应不断变化的移动开发环境。

    Gridview加载网络图片Andriod源码

    总之,“Gridview加载网络图片Andriod源码”项目提供了无依赖的解决方案,通过自定义Adapter实现网络图片的异步加载,同时考虑了性能优化和用户体验。开发者可以通过阅读和研究源码,学习到如何在Android中高效地...

Global site tag (gtag.js) - Google Analytics