Android 控件之Gallery和ImageSwitcher图片切换器,hashmap底层原理

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;

@Override

public 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” };

@Override

public void onClick(View v) {

initImageChooseDialog();

imageChooseDialog.show();

}

}

//初始化对话框;

private void initImageChooseDialog() {

AlertDialog.Builder builder = new Builder(this);

builder.setTitle(“请选择图片”)

.setPositiveButton(“确定”, new DialogInterface.OnClickListener(){

@Override

public void onClick(DialogInterface dialog, int which) {

imButton.setImageResource(images[imagePosition]);

}

})

.setNegativeButton(“取消”, new DialogInterface.OnClickListener() {

@Override

public 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);

imageSwit

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

cher = (ImageSwitcher)view.findViewById(R.id.imageswitch);

imageSwitcher.setFactory(new ImageViewFactory(this));

gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override

public void onItemSelected(AdapterView<?> parent, View view,

int position, long id) {

// TODO Auto-generated method stub

imagePosition=position;

imageSwitcher.setImageResource(images[position]);

}

@Override

public 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;

}

/**

  • 显示的数据列数。这里是可供选择的图片数量。表示画的次数,在创建类时首先运行。

*/

@Override

public int getCount() {

// TODO Auto-generated method stub

System.out.println(“BaseAdapter-----getCount:”+images.length);

return images.length;

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

System.out.println(“BaseAdapter-----getItem:”+position);

return null;

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

System.out.println(“BaseAdapter-----getItemId:”+position);

return 0;

}

/**

  • 返回自己定义试图;也可以在xml文件里进行定义,(这里定义 的是gallery里的数据的格式 。)

  • 这里position表示当前选择列的位置。

  • 每显示一列数据都会执行一次

*/

@Override

public 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;

}

@Override

public View makeView() {

ImageView iv = new ImageView(context);

//设置显示的大小 。布局参数。

iv.setLayoutParams(new ImageSwitcher.LayoutParams(90, 90));

return iv;

}

}

}

当第一次运行,选择图片之后的时候,在日志输出:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值