android之查看图片的程序 ImageSwitcher Gallery的配合应用---版本1

最终效果图:

当我们在最下边的gallery中切换图片时,上面的大图片会自动切换,切换时有动画效果哦,很简单的一个程序,有待完善更多的功能!

activity代码:

[java:nogutter] view plain copy print ?
  1. package cn.com.chenzheng_java;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.view.Window;
  8. import android.view.animation.AnimationUtils;
  9. import android.widget.AdapterView;
  10. import android.widget.BaseAdapter;
  11. import android.widget.Gallery;
  12. import android.widget.ImageSwitcher;
  13. import android.widget.ImageView;
  14. import android.widget.Toast;
  15. import android.widget.AdapterView.OnItemSelectedListener;
  16. import android.widget.ImageView.ScaleType;
  17. import android.widget.ViewSwitcher.ViewFactory;
  18. /**
  19. * @description 对图片的一个小小展示
  20. * @author chenzheng_java
  21. * @since 2011/3/17
  22. *
  23. */
  24. public class GalleryActivity extends Activity implements OnItemSelectedListener {
  25. int[] imagesId = new int[] { R.drawable.a1, R.drawable.a2, R.drawable.a3,
  26. R.drawable.a4
  27. };
  28. int index = R.drawable.a1;
  29. ImageSwitcher imageSwitcher;
  30. @Override
  31. protected void onCreate(Bundle savedInstanceState) {
  32. super.onCreate(savedInstanceState);
  33. /**
  34. * 设置窗口无标题栏,一定要在setContentView前进行设置哦
  35. */
  36. requestWindowFeature(Window.FEATURE_NO_TITLE);
  37. setContentView(R.layout.gallery);
  38. Gallery gallery = (Gallery) findViewById(R.id.gallery1);
  39. gallery.setOnItemSelectedListener(this);
  40. imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
  41. imageSwitcher.setVisibility(View.VISIBLE);
  42. /***
  43. * setInAnimation可以设置淡入动画
  44. * setOutAnimation可以设置淡出动画
  45. */
  46. imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(
  47. getApplicationContext(), android.R.anim.fade_in));
  48. imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(
  49. getApplicationContext(), android.R.anim.fade_out));
  50. imageSwitcher.setFactory(new ViewFactory() {
  51. /**
  52. * 创建一个新的图片放置到ImageSwitcher上,可以使用其设置背景哦。
  53. * 一般只会在创建时调用一次。相当于为我们创建一个进行动画效果时的一个背景图。
  54. * 此方法亦可以通过setView替代
  55. */
  56. @Override
  57. public View makeView() {
  58. ImageView imageView = new ImageView(GalleryActivity.this);
  59. // 设置截取模式
  60. imageView.setScaleType(ScaleType.CENTER_INSIDE);
  61. imageView.setBackgroundResource(R.drawable.ground);
  62. Toast.makeText(getApplicationContext(), "执行了一次",
  63. Toast.LENGTH_SHORT).show();
  64. return imageView;
  65. }
  66. });
  67. gallery.setVisibility(View.VISIBLE);
  68. gallery.setAdapter(new ImageAdapter(this));
  69. }
  70. class ImageAdapter extends BaseAdapter {
  71. private Context context2;
  72. public ImageAdapter(Context context) {
  73. context2 = context;
  74. }
  75. @Override
  76. public int getCount() {
  77. return imagesId.length;
  78. }
  79. @Override
  80. public Object getItem(int position) {
  81. return imagesId[position];
  82. }
  83. @Override
  84. public long getItemId(int position) {
  85. return position;
  86. }
  87. @Override
  88. public View getView(int position, View image2, ViewGroup parent) {
  89. ImageView image = new ImageView(context2);
  90. image.setBackgroundResource(imagesId[position]);
  91. /**
  92. * setScaleType()可以设置当图片大小和容器大小不匹配时的剪辑模式.
  93. * ScaleType.CENTER_INSIDE的意思是,按图片的原比例缩小或者扩大,直到长或者宽中的任何一个顶到容器为止
  94. */
  95. image.setScaleType(ScaleType.CENTER_INSIDE);
  96. return image;
  97. }
  98. }
  99. /**
  100. * 当gallery的图像发生变化时,同步ImageSwitcher的变化
  101. */
  102. @Override
  103. public void onItemSelected(AdapterView<?> parent, View view, int position,
  104. long id) {
  105. imageSwitcher.setImageResource(imagesId[position]);
  106. }
  107. @Override
  108. public void onNothingSelected(AdapterView<?> parent) {
  109. }
  110. }

gallery.xml

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值