Android 用zoom放大缩小图片Word文档下载推荐.docx
《Android 用zoom放大缩小图片Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Android 用zoom放大缩小图片Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
pre
name="
code"
class="
java"
>
android.content.Context;
android.graphics.Canvas;
android.graphics.drawable.Drawable;
android.view.KeyEvent;
android.view.View;
Zoom
View
private
Drawable
image;
int
zoomControler=20;
Zoom(Context
context)
super(context);
image=context.getResources().getDrawable(R.drawable.icon);
setFocusable(true);
protected
onDraw(Canvas
canvas)
//
TODO
Auto-generated
method
stub
super.onDraw(canvas);
//here
u
can
control
width
and
height
of
images........
this
line
very
important
image.setBounds((getWidth()/2)-zoomControler,
(getHeight()/2)-zoomControler,
(getWidth()/2)+zoomControler,
(getHeight()/2)+zoomControler);
image.draw(canvas);
boolean
onKeyDown(int
keyCode,
KeyEvent
event)
if(keyCode==KeyEvent.KEYCODE_DPAD_UP)//
zoom
in
zoomControler+=10;
if(keyCode==KeyEvent.KEYCODE_DPAD_DOWN)
out
zoomControler-=10;
if(zoomControler<
10)
zoomControler=10;
invalidate();
return
true;
packagecom.min.Test_Gallery;
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.graphics.Color;
importandroid.graphics.Matrix;
importandroid.os.Bundle;
importandroid.util.DisplayMetrics;
importandroid.util.Log;
importandroid.view.GestureDetector;
importandroid.view.KeyEvent;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.GestureDetector.OnGestureListener;
importandroid.view.View.OnTouchListener;
importandroid.widget.Button;
importandroid.widget.FrameLayout;
importandroid.widget.ImageView;
importandroid.widget.LinearLayout;
importandroid.widget.Toast;
publicclassDisplayImageextendsActivityimplementsOnTouchListener,OnGestureListener{
privatestaticfinalStringTAG="
DisplayImage"
;
privatestaticfinalintFLING_MIN_DISTANCE=100;
privatestaticfinalintFLING_MIN_VELOCITY=200;
/*相关变量声明*/
privateImageViewmImageView;
privateButtonmButton01;
privateButtonmButton02;
privateFrameLayoutlayout1;
privateLinearLayoutlayoutImage;
privateBitmapbmp;
privateintid=0;
privateintdisplayWidth;
privateintdisplayHeight;
privatefloatscaleWidth=1;
privatefloatscaleHeight=1;
privateGestureDetectormGestureDetector;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
/*加载display.xmlLayout*/
setContentView(R.layout.display);
/*取得屏幕分辨率大小*/
DisplayMetricsdm=newDisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
displayWidth=dm.widthPixels;
displayHeight=dm.heightPixels;
/*初始化相关变量*/
Bundlebundle=this.getIntent().getExtras();
IntegerimageId=bundle.getInt("
imageId"
);
Log.i(TAG,"
onCreate,imageId="
+imageId);
bmp=BitmapFactory.decodeResource(getResources(),imageId);
mImageView=(ImageView)findViewById(R.id.myImageView);
mImageView.setImageBitmap(bmp);
mImageView.setOnTouchListener(this);
mImageView.setLongClickable(true);
layout1=(FrameLayout)findViewById(R.id.layout1);
layoutImage=(LinearLayout)findViewById(R.id.layoutImage);
mButton01=(Button)findViewById(R.id.myButton1);
mButton02=(Button)findViewById(R.id.myButton2);
/*缩小按钮onClickListener*/
mButton01.setOnClickListener(newButton.OnClickListener(){
@Override
publicvoidonClick(Viewv){
small();
}
});
/*放大按钮onClickListener*/
mButton02.setOnClickListener(newButton.OnClickListener(){
@Override
big();
}
}
//用户轻触触摸屏,由1个MotionEventACTION_DOWN触发
publicbooleanonDown(MotionEvente){
//TODOAuto-generatedmethodstub
//Toast.makeText(this,"
onDown"
Toast.LENGTH_SHORT).show();
onDown..."
returnfalse;
}
/*用户按下触摸屏、快速移动后松开,由1个MotionEventACTION_DOWN,
*多个ACTION_MOVE,1个ACTION_UP触发
*参数解释:
*e1:
第1个ACTION_DOWNMotionEvent
*e2:
最后一个ACTION_MOVEMotionEvent
*velocityX:
X轴上的移动速度,像素/秒
*velocityY:
Y轴上的移动速度,像素/秒
*触发条件:
*X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
*@seeandroid.view.GestureDetector$OnGestureListener#onFling(android.view.MotionEvent,android.view.MotionEvent,float,float)
*/
publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,
floatvelocityY){
onFling..."
if(e1.getX()-e2.getX()>
FLING_MIN_DISTANCE
&
&
Math.abs(velocityX)>
FLING_MIN_VELOCITY){
//Flingleft
Toast.makeText(this,"
FlingLeft"
}elseif(e2.getX()-e1.getX()>
//Flingright
FlingRight"
//用户长按触摸屏,由多个MotionEventACTION_DOWN触发
publicvoidonLongPress(MotionEvente){
onLongPress..."
//用户按下触摸屏,并拖动,由1个MotionEventACTION_DOWN,多个ACTION_MOVE触发
publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,
floatdistanceY){
onScroll..."
//用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEventACTION_DOWN触发
//注意和onDown()的区别,强调的是没有松开或者拖动的状态
publicvoidonShowPress(MotionEvente){
onShowPress..."
//用户(轻触触摸屏后)松开,由一个1个MotionEventACTION_UP触发
publicbooleanonSingleTapUp(MotionEvente){
onSingleTapUp..."
publicbooleanonTouch(Viewv,MotionEventevent){
onTouch..."
//Setbuttonvisible
mButton01.setVisibility(View.VISIBLE);
mButton02.setVisibility(View.VISIBLE);
returnmGestureDetector.onTouchEvent(event);
//@Override
//publicbooleanonTouchEvent(MotionEventevent){
////TODOAuto-generatedmethodstub
//super.onTouchEvent(event);
//
//Log.i(TAG,"
onTouchEvent"
////Setbuttonvisible
//mButton01.setVisibility(View.VISIBLE);
//mButton02.setVisibility(View.VISIBLE);
//returntrue;
//}
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
super.onKeyDown(keyCode,event);
onKeyDown..."
returntrue;
/*图片缩小的method*/
privatevoidsmall(){
intbmpWidth=bmp.getWidth();
intbmpHeight=bmp.getHeight();
bmpWidth="
+bmpWidth+"
bmpHeight="
+bmpHeight);
/*设置图片缩小的比例*/
doublescale=0.8;
/*计算出这次要缩小的比例*/
scaleWidth=(float)(scaleWidth*scale);
scaleHeight=(float)(scaleHeight*scale);
/*产生reSize后的Bitmap对象*/
Matrixmatrix=newMatrix();
matrix.postScale(scaleWidth,scaleHeight);
BitmapresizeBmp=Bitmap.createBitmap(bmp,0,0,bmpWidth,
bmpHeight,matrix,true);
if(id==0){
/*如果是第一次按,就删除原来默认的ImageView*/
layoutImage.removeView(mImageView);
}else{
/*如果不是第一次按,就删除上次放大缩小所产生的ImageView*/
layoutImage.removeView((ImageView)findViewById(id));
}
/*产生新的ImageView,放入reSize的Bitmap对象,再放入Layout中*/
id++;
ImageViewimageView=newImageView(this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layoutImage.addView(imageView);
imageView.getWidth()="
+imageView.getWidth()
+"
imageView.getHeight()="
+imageView.getHeight());
setContentView(layout1);
/*因为图片放到最大时放大按钮会disable,所以在缩小时把它重设为enable*/
mButton02.setEnabled(true);
mButton02.setTextColor(Color.MAGENTA);
/*图片放大的method*/
privatevoidbig(){
/*设置图片放大的比例*/
doublescale=1.25;
/*计算这次要放大的比例*/
scaleWidth=(float)(scaleWidth*scale);
scaleHeight=(float)(scaleHeight*scale);
/*如果是第一次按,就删除原来设置的ImageView*/
/*如果不是第一次按,就删除上次放大缩小所产生的ImageView*/
}
/*如果再放大会超过屏幕大小,就把Buttondisable*/