Android图片转换器代码分享
MainActivity.java
packagecom.zhang.showPhoto; importandroid.app.ActionBar.LayoutParams; importandroid.app.Activity; importandroid.os.Bundle; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.view.animation.AnimationUtils; importandroid.widget.Button; importandroid.widget.ImageSwitcher; importandroid.widget.ImageView; importandroid.widget.ViewSwitcher.ViewFactory; publicclassMainActivityextendsActivity{ privateint[]imagId=newint[]{ R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04, R.drawable.img05,R.drawable.img06,R.drawable.img07,R.drawable.img08, R.drawable.img09,R.drawable.img10 }; privateintindex=0; privateImageSwitcherimageSwitcher; privateButtonup,down; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); up=(Button)findViewById(R.id.bt1); down=(Button)findViewById(R.id.bt2); imageSwitcher=(ImageSwitcher)findViewById(R.id.imagSw1); imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in)); imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out)); imageSwitcher.setFactory(newViewFactory(){ publicViewmakeView(){ ImageViewimageView=newImageView(MainActivity.this); imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); imageView.setLayoutParams(newImageSwitcher.LayoutParams( LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT )); returnimageView; } }); imageSwitcher.setImageResource(imagId[index]); up.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ if(index>0){ index--; }else{ index=imagId.length-1; } imageSwitcher.setImageResource(imagId[index]); } }); down.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ if(index<imagId.length-1){ index++; }else{ index=0; } imageSwitcher.setImageResource(imagId[index]); } }); } }
main.xml
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:background="@drawable/bg1" android:id="@+id/llayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="上一张" android:id="@+id/bt1" /> <ImageSwitcher android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imagSw1" android:layout_gravity="center" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下一张" android:id="@+id/bt2" /> </LinearLayout>
再来看一段代码
//获取图片的宽高 BitmapFactory.Optionsopt=newBitmapFactory.Options(); opt.inJustDecodeBounds=true; try{ bitmapIn=BitmapFactory.decodeFile(Puzzle.user.CUSTOM_IMAGE[customImage],opt); }catch(Exceptione){ if(D)Log.d(TAG,"error"); return; } intin_w=opt.outWidth,in_h=opt.outHeight; //获取imageview的尺寸注意imageview的宽高比要与原图相同否则需要另行计算 full_w=imageview.getWidth() full_h=getHeight() //计算缩放比例带有四舍五入 intSize_rate=(in_w*in_h*10)/(full_w*full_h); if(Size_rate>10){ Size_rate+=5; Size_rate/=10; }else{ Size_rate=1; } //重新设置opt读取图片文件 opt.inSampleSize=Size_rate; opt.inJustDecodeBounds=false; opt.inScaled=false; opt.outWidth=full_w; opt.outHeight=full_h; bitmapIn=BitmapFactory.decodeFile(Puzzle.user.CUSTOM_IMAGE[customImage],opt);}