博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gallery练习(android)
阅读量:5086 次
发布时间:2019-06-13

本文共 4633 字,大约阅读时间需要 15 分钟。

Gallery 是显示图片用的,需要指定一个图片的来源 adapter ,这个继承自 BaseAdapter ,具体代码如下

xml 代码

<?
xml version="1.0" encoding="utf-8"
?>
<
Gallery
    
xmlns:android
="http://schemas.android.com/apk/res/android"
    android:id
="@+id/gallery"
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent"
 
    
>
    
    
</
Gallery
>

 

java 代码

package zziss.android.gallerytest;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Gallery;
public 
class GalleryTestActivity 
extends Activity {
    
/**
 Called when the activity is first created. 
*/
    
private ImageAdapter2 ia;
    
private Gallery      iGallery;
    @Override
    
public 
void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        iGallery = (Gallery)
this.findViewById(R.id.gallery);
        
try {
            ia = 
new ImageAdapter2(
this);
        } 
catch (IllegalArgumentException e) {
            
//
 TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (IllegalAccessException e) {
            
//
 TODO Auto-generated catch block
            e.printStackTrace();
        }
        iGallery.setBackgroundResource(R.drawable.aa);
        iGallery.setAdapter(ia);
        
        iGallery.setOnItemClickListener(
new AdapterView.OnItemClickListener()
        {
            @Override
            
public 
void onItemClick(AdapterView<?> arg0, View arg1, 
int arg2,
                    
long arg3) {
                AlertDialog dlg = 
new AlertDialog.Builder(GalleryTestActivity.
this)
                .setTitle("Gallery 测试")
                .setMessage("点击了"+Integer.toString(arg2)+"图片")
                
//
.setIcon(ia.mImageIds[arg2])
                .setPositiveButton("确定", 
null)
                .create();
                dlg.setCanceledOnTouchOutside(
false);
                dlg.show();
                
                
            }
            
        });
    }
}

 

 

ImageAdapter代码

package zziss.android.gallerytest;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
public 
class ImageAdapter 
extends BaseAdapter {
    
    
private Context context;
    
public Integer[] mImageIds=
        {
            R.drawable.phone,
            R.drawable.tetris,
            R.drawable.tetromino,
            R.drawable.text,
            R.drawable.videos
        };
    
    
    
    
public ImageAdapter(Context context) {
        
this.context = context;
    }
    @Override
    
public 
int getCount() {
        
//
 TODO Auto-generated method stub
        
return mImageIds.length;
    }
    @Override
    
public Object getItem(
int arg0) {
        
//
 TODO Auto-generated method stub
        
return arg0;
    }
    @Override
    
public 
long getItemId(
int position) {
        
//
 TODO Auto-generated method stub
        
return position;
    }
    @Override
    
public View getView(
int position, View convertView, ViewGroup parent) {
        
//
 TODO Auto-generated method stub
        ImageView iv = 
new ImageView(context);
        iv.setImageResource(mImageIds[position]);
        iv.setLayoutParams(
new Gallery.LayoutParams(60,60));
        iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
        
return iv;
    }
}

ImageAdater2代码

这个是从 drawable 中获取的所有图片,不需要编码指定图片资源

 

package zziss.android.gallerytest;
import java.lang.reflect.Field;
import java.util.ArrayList;
import zziss.android.gallerytest.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
public 
class ImageAdapter2 
extends BaseAdapter {
    
private ArrayList<Integer> imgList;
    
private ArrayList<Object> sizeList;
    
private Context context;
    
public ImageAdapter2(Context context) 
throws IllegalArgumentException, IllegalAccessException
    {
        
this.context = context;
        imgList = 
new ArrayList<Integer>();
        sizeList = 
new ArrayList<Object>();
        Field[] fields=R.drawable.
class.getDeclaredFields();
        
for(Field field:fields)
        {
            
if (!("icon".equals(field.getClass())))
            {
                
int index = field.getInt(R.drawable.
class);
                imgList.add(index);
                
                
int size[]=
new 
int[2];
                Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), index);
                size[0] = bitmap.getWidth();
                size[1] = bitmap.getHeight();
                sizeList.add(size);
                bitmap=
null;
            }
        }
    }
    
    @Override
    
public 
int getCount() {
        
//
 TODO Auto-generated method stub
        
return imgList.size();
    }
    @Override
    
public Object getItem(
int position) {
        
//
 TODO Auto-generated method stub
        
return position;
    }
    @Override
    
public 
long getItemId(
int position) {
        
//
 TODO Auto-generated method stub
        
return position;
    }
    @Override
    
public View getView(
int position, View convertView, ViewGroup parent) {
        
//
 TODO Auto-generated method stub
        ImageView iv = 
new ImageView(context);
        iv.setImageResource(imgList.get(position).intValue());
        iv.setScaleType(ImageView.ScaleType.FIT_XY);
        
int size[] = 
new 
int[2];
        size = (
int[])sizeList.get(position);
        iv.setLayoutParams(
new Gallery.LayoutParams(size[0],size[1]));
        
return iv;
    }
}

 

转载于:https://www.cnblogs.com/zziss/archive/2012/01/05/2313344.html

你可能感兴趣的文章
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>
数据中心虚拟化技术
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
list 容器 排序函数.xml
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>