昨天小菜看到了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,这也是后话了。