结合ImageSwithcer和Gallery控件制作一个图片浏览(附源代码)
2015-03-09 16:25
543 查看
运行截图:
下部分的是Gallery控件,实现了无限循环.
项目结构:
界面布局:
采用绝对布局,上部分是ImageSwitcher控件,下部分是Gallery控件。
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<!-- 相对布局 -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<!-- 宽和高填满父控件 -->
<ImageSwitcher
android:id="@+id/switcher"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<!-- 宽填满父控件,高为60像素,间隔为16像素,与父控件的左侧和底部对齐 -->
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="60px"
android:spacing="16px"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true" />
</RelativeLayout>
复制代码
ViewPicturesActivity.java代码:
package com.android.coding;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.Gallery.LayoutParams;
import android.widget.ViewSwitcher.ViewFactory;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
public class ViewPicturesActivity extends Activity {
ImageSwitcher imageSwitcher; //声明ImageSwitcher对象,图片显示区域
Gallery gallery; //声明Gallery对象,图片列表索引
int imagePosition; //标记图片数组下标,用于循环显示
//声明图片整型数组
private int[] images = {
R.drawable.image1,R.drawable.image2,
R.drawable.image3,R.drawable.image4,
R.drawable.image5,R.drawable.image6,
R.drawable.image7,R.drawable.image8,
R.drawable.image9,R.drawable.image10,
R.drawable.image11,R.drawable.image12,
R.drawable.image13,R.drawable.image14,
R.drawable.image15,R.drawable.image16,
R.drawable.image17};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通过控件的ID获得imageSwitcher的对象
imageSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
//设置自定义的图片显示工厂类
imageSwitcher.setFactory(new MyViewFactory(this));
//通过控件的ID获得gallery的对象
gallery = (Gallery) findViewById(R.id.gallery);
//设置自定义的图片适配器
gallery.setAdapter(new ImageAdapter(this));
//实现被选中的事件监听器
gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
//通过求余数,循环显示图片
imageSwitcher.setImageResource(images[position%images.length]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
//自定义图片适配器,继承BaseAdapter
class ImageAdapter extends BaseAdapter{
private Context context; //定义上下文
//参数为上下文的构造方法
public ImageAdapter(Context context) {
this.context = context;
}
//得到图片的大小
@Override
public int getCount() { //设置为整型的最大数
return Integer.MAX_VALUE;
}
//得到指定图片的对象
@Override
public Object getItem(int position) {
return null;
}
//得到指定图片的对象的ID
@Override
public long getItemId(int position) {
return 0;
}
//显示图标列表
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(context); //创建ImageView对象
iv.setImageResource(images[position%images.length]); //设置循环显示图片
iv.setAdjustViewBounds(true); //图片自动调整显示
//设置图片的宽和高
iv.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
return iv; //返回ImageView对象
}
}
//自定义图片显示工厂类,继承ViewFactory
class MyViewFactory implements ViewFactory{
private Context context; //定义上下文
//参数为上下文的构造方法
public MyViewFactory(Context context) {
this.context = context;
}
//显示图标区域
@Override
public View makeView() {
ImageView iv = new ImageView(context); //创建ImageView对象
iv.setScaleType(ImageView.ScaleType.FIT_CENTER); //图片自动居中显示
//设置图片的宽和高
iv.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
return iv; //返回ImageView对象
}
}
}
相关文章推荐
- 水印控件windows phone中,制作一个自定义的密码输入框控件,含图片,有水印,星号显示
- Android UI控件之Gallery --拖动、覆盖、循环、3D图片浏览 效果之一
- Android UI控件之Gallery实现拖动式图片浏览效果
- Gallery和imageSwitcher结合使用浏览图片(简单图片浏览器)
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- Android UI控件之Gallery --拖动、覆盖、循环、3D图片浏览 效果之一
- ImageSwithcer支持动画的图片浏览器
- Android UI控件之Gallery --拖动、覆盖、循环、3D图片浏览 效果之二
- 一个很炫的图片/相册浏览控件(Flex实现)
- Android UI控件之Gallery(拖动效果) --拖动式图片浏览
- Eg:Gallery与ImageSwitcher结合的图片浏览小程序
- 简单图片浏览工具—ImageSwitcher和Gallery组件结合使用
- 通过Gallery和ImageSwitcher制作图片浏览
- GridView和Gallery两个控件实现图片浏览
- Android UI控件之Gallery --拖动、覆盖、循环、3D图片浏览 效果之二
- Android UI控件之Gallery(拖动效果) --拖动式图片浏览
- [label][webSites]一个结合Google地图的图片浏览网站
- 使用CSS制作的一个图片浏览效果。
- Android 高级UI设计笔记14:Gallery(画廊控件)之 3D图片浏览
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)