ImageSwitcher,里面的图片放大缩小,有效果


  1. public class ImageSwitcherActivity extends Activity implements ViewSwitcher.ViewFactory {
  2.         private ImageView imageView;
  3.         private Button btn_next, btn_pre, zoom_up, zoom_down;
  4.         private ImageSwitcher mSwitcher;
  5.         private Integer[] mImageIds = { R.drawable.bs_grid_cover_1, R.drawable.bs_grid_cover_2,
  6.                         R.drawable.bs_grid_cover_3, R.drawable.bs_grid_cover_4, R.drawable.bs_grid_cover_5,
  7.                         R.drawable.bs_grid_cover_6, R.drawable.bs_grid_cover_7, R.drawable.bs_grid_cover_8 };
  8.         private int position = 0;
  9.         private boolean isScale = false;// 是否缩放过
  10.         private boolean isMin = false;// 是否最小了
  11.         private boolean isMax = false;// 是否最大了, 仅放大缩小一倍

  12.         @Override
  13.         protected void onCreate(Bundle savedInstanceState) {
  14.                 // TODO Auto-generated method stub
  15.                 super.onCreate(savedInstanceState);
  16.                 requestWindowFeature(Window.FEATURE_NO_TITLE);
  17.                 setContentView(R.layout.image_activity);
  18.                 btn_next = (Button) findViewById(R.id.next);
  19.                 btn_pre = (Button) findViewById(R.id.pre);
  20.                 zoom_down = (Button) findViewById(R.id.zoom_out);
  21.                 zoom_up = (Button) findViewById(R.id.zoom_in);
  22.                 mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
  23.                 mSwitcher.setFactory(this);
  24.                 mSwitcher.setImageResource(mImageIds[0]);
  25.                 mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
  26.                 mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));

  27.                 btn_next.setOnClickListener(new OnClickListener() {

  28.                         @Override
  29.                         public void onClick(View v) {
  30.                                 // TODO Auto-generated method stub
  31.                                 if (position == mImageIds.length - 1) {
  32.                                         position = -1;// 到0
  33.                                 }
  34.                                 position += 1;
  35.                                 mSwitcher.setImageResource(mImageIds[position]);
  36.                                 isScale = false;
  37.                                 isMin = false;
  38.                                 isMax = false;
  39.                         }
  40.                 });
  41.                 btn_pre.setOnClickListener(new OnClickListener() {

  42.                         @Override
  43.                         public void onClick(View v) {
  44.                                 // TODO Auto-generated method stub
  45.                                 if (position == 0) {
  46.                                         position = mImageIds.length;// 到最后
  47.                                 }
  48.                                 position -= 1;
  49.                                 mSwitcher.setImageResource(mImageIds[position]);
  50.                                 isScale = false;
  51.                                 isMin = false;
  52.                                 isMax = false;
  53.                         }
  54.                 });
  55.                 zoom_down.setOnClickListener(new OnClickListener() {

  56.                         @Override
  57.                         public void onClick(View v) {
  58.                                 // TODO Auto-generated method stub
  59.                                 isMax = false;
  60.                                 if (!isMin)
  61.                                         if (isScale)
  62.                                                 revert();
  63.                                         else
  64.                                                 samall();
  65.                         }
  66.                 });
  67.                 zoom_up.setOnClickListener(new OnClickListener() {

  68.                         @Override
  69.                         public void onClick(View v) {
  70.                                 isMin = false;
  71.                                 if (!isMax)
  72.                                         if (isScale)
  73.                                                 revert();
  74.                                         else
  75.                                                 big();
  76.                         }
  77.                 });
  78.         }

  79.         ImageView iv = null;

  80.         @Override
  81.         public View makeView() {
  82.                 // if (iv != null){
  83.                 // iv = null;
  84.                 // }
  85.                 iv = new ImageView(this);
  86.                 iv.setBackgroundColor(0xFF000000);
  87.                 iv.setScaleType(ImageView.ScaleType.CENTER);
  88.                 iv.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT,
  89.                                 LayoutParams.WRAP_CONTENT));
  90.                 return iv;
  91.         }

  92.         private void samall() {
  93.                 if (iv != null) {
  94.                         Bitmap bmp = BitmapFactory.decodeResource(getResources(), mImageIds[position]);
  95.                         Matrix matrix = new Matrix();
  96.                         matrix.postScale((float) 0.8, (float) 0.8);
  97.                         Bitmap newBmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
  98.                         iv.setImageBitmap(newBmp);
  99.                         iv.invalidate();
  100.                         isScale = true;
  101.                         isMin = true;
  102.                 }
  103.         }

  104.         private void big() {
  105.                 if (iv != null) {
  106.                         Bitmap bmp = BitmapFactory.decodeResource(getResources(), mImageIds[position]);
  107.                         Matrix matrix = new Matrix();
  108.                         matrix.postScale((float) 1.25, (float) 1.25);
  109.                         Bitmap newBmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
  110.                         iv.setImageBitmap(newBmp);
  111.                         iv.invalidate();
  112.                         isScale = true;
  113.                         isMax = true;
  114.                 }
  115.         }

  116.         private void revert() {
  117.                 if (iv != null) {
  118.                         Bitmap bmp = BitmapFactory.decodeResource(getResources(), mImageIds[position]);
  119.                         iv.setImageBitmap(bmp);
  120.                         iv.invalidate();
  121.                         isScale = false;
  122.                 }
  123.         }
  124. }

你可能感兴趣的:(ImageSwitcher,里面的图片放大缩小,有效果)