ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果...,颇有感觉啊。做相册一绝

一、重要方法

    setImageURI(Uriuri):设置图片地址

    setImageResource(int resid):设置图片资源库

    setImageDrawable(Drawabledrawable):绘制图片

二、实例

 

设置动画效果

imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));

  

三、完整代码

1、布局文件imageswitch.xml(显示弹出的对话框内容的布局。一个Gallery和一个ImageSwitcher,一上一下)

<?xml version="1.0" encoding="utf-8"?><RelativeLayout android:id="@+id/widget34"android:layout_width="fill_parent" android:layout_height="fill_parent"xmlns:android="http://schemas.android.com/apk/res/android"><Gallery android:id="@+id/img_gallery" android:layout_width="fill_parent"android:layout_height="110px" android:layout_marginTop="10px"android:layout_alignParentLeft="true"/><ImageSwitcher android:id="@+id/imageswitch"android:layout_width="90px" android:layout_height="90px"android:layout_alignParentTop="true" android:layout_centerHorizontal="true"android:layout_alignBottom="@+id/gallery"/></RelativeLayout>
2、完整类AddUserActivity.java,当点击对应的按钮的时候,就弹出圣诞框。

public class AddUserActivity extends Activity {/** Called when the activity is first created. */ImageButton imButton;ImageSwitcher imageSwitcher;Gallery gallery;int imagePosition;/** * 所有的图像图片 */private  int[] images = new int[]{R.drawable.icon,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,R.drawable.image18,R.drawable.image19,R.drawable.image20,R.drawable.image21,R.drawable.image22,R.drawable.image23,R.drawable.image24,R.drawable.image25,R.drawable.image26,R.drawable.image27,R.drawable.image28,R.drawable.image29,R.drawable.image30};AlertDialog imageChooseDialog;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.add_new);imButton = (ImageButton) findViewById(R.id.image_button);imButton.setOnClickListener(new ImageButtonListener());}class ImageButtonListener implements OnClickListener{final CharSequence[] items = { "Red", "Green", "Blue" };@Overridepublic void onClick(View v) {initImageChooseDialog();imageChooseDialog.show();}}//初始化对话框;private void initImageChooseDialog() {AlertDialog.Builder builder = new Builder(this);builder.setTitle("请选择图片").setPositiveButton("确定", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {imButton.setImageResource(images[imagePosition]);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});LayoutInflater inflater = LayoutInflater.from(this);View view = inflater.inflate(R.layout.imageswitch, null);gallery = (Gallery)view.findViewById(R.id.img_gallery);gallery.setAdapter(new ImageAdapter(this));//设置gallery数据。gallery.setSelection(images.length/2);imageSwitcher = (ImageSwitcher)view.findViewById(R.id.imageswitch);imageSwitcher.setFactory(new ImageViewFactory(this));gallery.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubimagePosition=position;imageSwitcher.setImageResource(images[position]);}@Overridepublic void onNothingSelected(AdapterView<?> parent) {// TODO Auto-generated method stub}});builder.setView(view);imageChooseDialog=builder.create();}/** * 这个Adapter类表示Data、Adapter、View,Adapter表示 Data和View之间的纽带 * 每显示一列数据都会运行这个类. */class ImageAdapter extends BaseAdapter{private Context context;public ImageAdapter(Context context) {this.context = context;}/** * 显示的数据列数。这里是可供选择的图片数量。表示画的次数,在创建类时首先运行。 */@Overridepublic int getCount() {// TODO Auto-generated method stubSystem.out.println("BaseAdapter-----getCount:"+images.length);return images.length;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubSystem.out.println("BaseAdapter-----getItem:"+position);return null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubSystem.out.println("BaseAdapter-----getItemId:"+position);return 0;}/** * 返回自己定义试图;也可以在xml文件里进行定义,(这里定义 的是gallery里的数据的格式 。) * 这里position表示当前选择列的位置。 * 每显示一列数据都会执行一次 */@Overridepublic View getView(int position, View convertView, ViewGroup parent) {System.out.println("BaseAdapter-----position:"+position);ImageView iv = new ImageView(context);iv.setImageResource(images[position%images.length]);iv.setAdjustViewBounds(true);iv.setLayoutParams(new Gallery.LayoutParams(80,80));iv.setPadding(15, 10, 15, 10);return iv;}}class ImageViewFactory implements ViewFactory{Context context;public ImageViewFactory(Context context) {this.context = context;}@Overridepublic View makeView() {ImageView iv = new ImageView(context);//设置显示的大小 。布局参数。iv.setLayoutParams(new ImageSwitcher.LayoutParams(90, 90));return iv;}}}
当第一次运行,选择图片之后的时候,在日志输出:

08-18 11:44:57.522: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.522: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.522: INFO/System.out(400): BaseAdapter-----getItemId:008-18 11:44:57.522: INFO/System.out(400): BaseAdapter-----getItemId:008-18 11:44:57.522: INFO/System.out(400): BaseAdapter-----getItemId:1508-18 11:44:57.572: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.572: INFO/System.out(400): BaseAdapter-----position:1508-18 11:44:57.583: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.583: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.583: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.613: INFO/System.out(400): BaseAdapter-----getItemId:1508-18 11:44:57.613: INFO/System.out(400): BaseAdapter-----position:1608-18 11:44:57.622: INFO/System.out(400): BaseAdapter-----position:1708-18 11:44:57.635: INFO/System.out(400): BaseAdapter-----position:1808-18 11:44:57.635: INFO/System.out(400): BaseAdapter-----position:1408-18 11:44:57.643: INFO/System.out(400): BaseAdapter-----position:1308-18 11:44:57.643: INFO/System.out(400): BaseAdapter-----position:1208-18 11:44:57.662: INFO/System.out(400): BaseAdapter-----getItemId:1508-18 11:44:57.662: INFO/System.out(400): BaseAdapter-----getItemId:1508-18 11:44:57.673: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.673: INFO/System.out(400): BaseAdapter-----position:1508-18 11:44:57.682: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.682: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.693: INFO/System.out(400): BaseAdapter-----getCount:3108-18 11:44:57.693: INFO/System.out(400): BaseAdapter-----getItemId:1508-18 11:44:57.693: INFO/System.out(400): BaseAdapter-----getItemId:15

运行结果如图:



更多相关文章

  1. Android的数据存储(二)——SQLite数据库
  2. android数据储存之应用安装位置
  3. Android — Room 数据库跳跃式升级(Migration)
  4. android中使用Thumbnails批量加载sdcard中的缩略图片
  5. Android 拼接两个图片
  6. android 视频、图片混合轮播控件zbanner
  7. Android计算图片占用内存

随机推荐

  1. android定时器应用
  2. Android(安卓)MMS模块数据存取
  3. Android 实现Navigation Bar和Status Bar
  4. android 软键盘回车键捕获
  5. 用代码创建Android视图
  6. android VideoView的使用例程
  7. sqlite数据库简单查询命令
  8. Android 基于4G模块 GPS定位
  9. android 如何从sqlite读取数据到spinner
  10. Android Http 异步请求