android相册画廊,Android-画廊实现 (Gallery , ImageSwitch)
1.回顾上篇学习 SrcollView 和 ViewFlipper 的实现 图片轮播效果2.重点(1)Gallery 实现(2)ImageSwitch实现(3)Gallery 的OnItemSelectedListener 实现(4)ImageSwitch 的ViewFactory 实现(5)实现实例——Gallery实现缩略图,ImageSwitch实现 放大效果3.实现3.1 说明Gall..
1.回顾
上篇学习 SrcollView 和 ViewFlipper 的实现 图片轮播效果
2.重点
(1)Gallery 实现
(2)ImageSwitch实现
(3)Gallery 的 OnItemSelectedListener 实现
(4)ImageSwitch 的 ViewFactory 实现
(5)实现实例——Gallery实现缩略图,ImageSwitch实现 放大效果
3.实现
3.1 说明
Gallery 在 安卓4.0版本已经 过时了,建议使用 ScrollView水平视图实现或者 GridView实现;
虽说过时了,但是 还是可以使用的,使用起来比较简单;
3.2 效果图
还是挺不错的;
3.3 布局实现
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="${relativePackage}.${activityClass}" >
android:id="@+id/gallery1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.02" />
android:id="@+id/imgswitch"
android:layout_width="match_parent"
android:layout_height="400dp" >
3.4 适配器实现
前面已经学过了 6 个 常用的适配器 :SimapleAdapter , ArrayAdapter ,BaseAdapter , PagerAdapter ,
FragmentPagerAdapter 和 FragmentStatePagerAdapter ;
其中 BaseAdapter 十分的灵活 ,易于 扩展;在此使用 BaseAdapter ; 这里就不解释了;
package com.example.adpater;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
public class ImageAdapter extends BaseAdapter{
private int [] pics;
private Context context;
public ImageAdapter(int [] pics,Context context) {
//初始化 数据源
this.pics=pics;
this.context=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return pics[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Item 生成
ImageView imageView=new ImageView(context);
//设置资源
imageView.setBackgroundResource(pics[position%pics.length]);
//拉伸图片
imageView.setScaleType(ScaleType.FIT_XY);
//设置大小
imageView.setLayoutParams(new Gallery.LayoutParams(200,100));
return imageView;
}
}
3.5 业务实现
(1)初始化 Gallary 和 imageswitch 控件
(2)准备数据源,在Drawable 中 粘贴 12张 图片,不要太大,否则报 内存溢出 错误
(3)绑定适配器
(4)设置Gallary OnItemSelectedListener 监听
(5)为 ImageSwitch 实现ViewFactory
package com.example.studydemo3;
import com.example.adpater.ImageAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity {
private Gallery gallery1;
private ImageSwitcher imgswitch;
// 准备数据源
private int[] pics = { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3,
R.drawable.pic4, R.drawable.pic5, R.drawable.pic6, R.drawable.pic7,
R.drawable.pic8, R.drawable.pic9, R.drawable.pic10, R.drawable.pic11,
R.drawable.pic12};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gallery1 = (Gallery) findViewById(R.id.gallery1);
imgswitch = (ImageSwitcher) findViewById(R.id.imgswitch);
//绑定 适配器
ImageAdapter imageAdapter=new ImageAdapter(pics, this);
gallery1.setAdapter(imageAdapter);
// 设置 viewFactory
imgswitch.setFactory(new imgSwitchListener());
// 设置监听事件
gallery1.setOnItemSelectedListener(new galleryItemListener());
}
/**
* Gallery item 选择事件
*
* @author yuan
*
*/
class galleryItemListener implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView> parent, View view,
int position, long id) {
// 使用这个
imgswitch.setBackgroundResource(pics[position%pics.length]);
}
@Override
public void onNothingSelected(AdapterView> parent) {
// 没有使用
}
}
// ImageSwitch 图片生产工厂
class imgSwitchListener implements ViewFactory {
@Override
public View makeView() {
// 返回 image
ImageView imageView = new ImageView(MainActivity.this);
// 使图片保持 原始比例大小 ,且中 显示
imageView.setScaleType(ScaleType.FIT_CENTER);
return imageView;
}
}
}
4. demo下载
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/lablenet/article/details/47978265
更多推荐
所有评论(0)