Gallery+ImageView实现图片浏览

昨天小菜看到了View的Gallery,哇,好酷的组件,可以实现图片浏览和预览也。

于是乎就参考了例子的代码弄了一个效果,后面才发现高级的ImageSwitcher也能实现这个功能,菜鸟就是菜鸟啊,看来还得加油。

虽然这样,还是把自己的代码贴出来嘛。

结构,继承关系

         public class Gallery extends AbsSpinner implements GestureDetector.OnGestureListener

               public class ImageSwitcher extends ViewSwitcher

main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="
http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
    <ImageView
    android:id="@+id/imageview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/a">
    </ImageView>
    <Gallery xmlns:android="
http://schemas.android.com/apk/res/android" android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:spacing="2dp"
        android:fadingEdge="none"
        >
</Gallery>
</FrameLayout>

attrs.xml

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

<declare-styleable name="Mygallery">

<attr name="android:galleryItemBackground" />

</declare-styleable>

</resources>

Mygallery.java

这里我把全部都写在一个类里面的,不推荐这样做哈

package com.eash;

import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;

public class Mygallery extends Activity {

 /** Called when the activity is first created. */

 private Gallery gallery;
 public ImageView imageview;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  
  imageview = (ImageView) findViewById(R.id.imageview);
  gallery = (Gallery) findViewById(R.id.gallery);
  gallery.setAdapter(new ImageAdapter(this));// 设置图片适配器

  // 设置监听器

  gallery.setOnItemClickListener(new OnItemClickListener() {

   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
     long arg3) {
    //Toast.makeText(Mygallery.this, "" + arg2,Toast.LENGTH_LONG).show(); 
    //imageview.setImageResource(arg2);
    imageview.setImageResource(((ImageView)arg1).getId());//我自己把这个改成getId,哈哈可以了
    //imageview.setBackgroundResource(((ImageView)arg1).getImageMatrix());//例子是这样写的,但是我搞不懂为啥不对
     Toast.makeText(Mygallery.this, "点击了第"+arg2+"张图片",Toast.LENGTH_LONG).show();
    
   }
  });

 }

}

class ImageAdapter extends BaseAdapter {
 int mGalleryItemBackground;
 private Context context;

 // 图片源数组

 private Integer[] imageInteger = {
 R.drawable.a,
 R.drawable.as,
 R.drawable.asd,
 R.drawable.asdf,
 };

 public ImageAdapter(Context c) {
  context = c; // 读取styleable资源
  TypedArray a =c.obtainStyledAttributes(R.styleable.Mygallery);
  mGalleryItemBackground = a.getResourceId(
    R.styleable.Mygallery_android_galleryItemBackground, 0);
  a.recycle();
 }

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

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

 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return position;
 }

 public View getView(int position, View convertView, ViewGroup parent) {
  ImageView imageView = new ImageView(context);
  imageView.setImageResource(imageInteger[position]);
  imageView.setId(imageInteger[position]);
  imageView.setScaleType(ImageView.ScaleType.FIT_XY);
  imageView.setLayoutParams(new Gallery.LayoutParams(120, 80));
  imageView.setBackgroundResource(mGalleryItemBackground);
  return imageView;
 }
}

恩  这样就实现了简单的图片浏览功能了,但是有一个问题我还是不知道怎么弄,

就是图片切换的动作如何添加,问了群里的大牛们都说用ImageSwitcher,这也是后话了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值