微信收藏夹语音的语音删除了怎么找回

我的Android进阶之旅------)android Matrix图片随意的放大缩小,拖动_Android开发-织梦者
当前位置:&>&&>& > 我的Android进阶之旅------)android Matrix图片随意的放大缩小,拖动
我的Android进阶之旅------)android Matrix图片随意的放大缩小,拖动
我的进阶之旅------)android Matrix图片随意的放大缩小,拖动。
step1:新建一个项目DragAndZoom,并准备一张照片放在res/drawable-hdpi目录下,如下图所示:
step2: 设置应用的UI界面,在main.xml中设置:
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:src=&@drawable/wall&
android:id=&@+id/imageView&
android:scaleType=&matrix&
step3:MainActivity.java中实现具体的需求
packagecn.roco.
importandroid.app.A
importandroid.graphics.M
importandroid.graphics.PointF;
importandroid.os.B
importandroid.util.FloatM
importandroid.view.MotionE
importandroid.view.V
importandroid.view.View.OnTouchL
importandroid.widget.ImageV
publicclassMainActivityextendsActivity{
privateImageViewimageV
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView=(ImageView)this.findViewById(R.id.imageView);
imageView.setOnTouchListener(newTouchListener());
privatefinalclassTouchListenerimplementsOnTouchListener{
/**记录是拖拉照片模式还是放大缩小照片模式*/
privateintmode=0;//初始状态
/**拖拉照片模式*/
privatestaticfinalintMODE_DRAG=1;
/**放大缩小照片模式*/
privatestaticfinalintMODE_ZOOM=2;
/**用于记录开始时候的坐标位置*/
privatePointFstartPoint=newPointF();
/**用于记录拖拉图片移动的坐标位置*/
privateMatrixmatrix=newMatrix();
/**用于记录图片要进行拖拉时候的坐标位置*/
privateMatrixcurrentMatrix=newMatrix();
/**两个手指的开始距离*/
privatefloatstartD
/**两个手指的中间点*/
privatePointFmidP
publicbooleanonTouch(Viewv,MotionEventevent){
/**通过与运算保留最后八位MotionEvent.ACTION_MASK=255*/
switch(event.getAction()&MotionEvent.ACTION_MASK){
//手指压下屏幕
caseMotionEvent.ACTION_DOWN:
mode=MODE_DRAG;
//记录ImageView当前的移动位置
currentMatrix.set(imageView.getImageMatrix());
startPoint.set(event.getX(),event.getY());
//手指在屏幕上移动,改事件会被不断触发
caseMotionEvent.ACTION_MOVE:
//拖拉图片
if(mode==MODE_DRAG){
floatdx=event.getX()-startPoint.x;//得到x轴的移动距离
floatdy=event.getY()-startPoint.y;//得到x轴的移动距离
//在没有移动之前的位置上进行移动
matrix.set(currentMatrix);
matrix.postTranslate(dx,dy);
//放大缩小图片
elseif(mode==MODE_ZOOM){
floatendDis=distance(event);//结束距离
if(endDis&10f){//两个手指并拢在一起的时候像素大于10
floatscale=endDis/startD//得到缩放倍数
matrix.set(currentMatrix);
matrix.postScale(scale,scale,midPoint.x,midPoint.y);
//手指离开屏幕
caseMotionEvent.ACTION_UP:
//当触点离开屏幕,但是屏幕上还有触点(手指)
caseMotionEvent.ACTION_POINTER_UP:
//当屏幕上已经有触点(手指),再有一个触点压下屏幕
caseMotionEvent.ACTION_POINTER_DOWN:
mode=MODE_ZOOM;
/**计算两个手指间的距离*/
startDis=distance(event);
/**计算两个手指间的中间点*/
if(startDis&10f){//两个手指并拢在一起的时候像素大于10
midPoint=mid(event);
//记录当前ImageView的缩放倍数
currentMatrix.set(imageView.getImageMatrix());
imageView.setImageMatrix(matrix);
/**计算两个手指间的距离*/
privatefloatdistance(MotionEventevent){
floatdx=event.getX(1)-event.getX(0);
floatdy=event.getY(1)-event.getY(0);
/**使用勾股定理返回两点之间的距离*/
returnFloatMath.sqrt(dx*dx+dy*dy);
/**计算两个手指间的中间点*/
privatePointFmid(MotionEventevent){
floatmidX=(event.getX(1)+event.getX(0))/2;
floatmidY=(event.getY(1)+event.getY(0))/2;
returnnewPointF(midX,midY);
step4:AndroidMainfest.xml
android:versionCode=&1&
android:versionName=&1.0&&
android:label=&@string/app_name&&
step5:具体的效果图
上面两个是图片拖拽的效果,而图片的缩放效果要在真机中才能够看得到,请读者自己在真机环境中测试。
其实 通过通过手势也可以缩放图片 左---&右 放大 右 ---&左 缩小 速度越快,缩放比例越大
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:src=&@drawable/wall&
android:id=&@+id/show&
android:scaleType=&matrix&
GestureZoom.java
packagecn.roco.
importandroid.app.A
importandroid.graphics.B
importandroid.graphics.BitmapF
importandroid.graphics.M
importandroid.graphics.drawable.BitmapD
importandroid.os.B
importandroid.view.GestureD
importandroid.view.GestureDetector.OnGestureL
importandroid.view.MotionE
importandroid.widget.ImageV
*通过手势缩放图片左---&右放大右---&左缩小速度越快,缩放比例越大
publicclassGestureZoomextendsActivityimplementsOnGestureListener{
//定义手势检测器实例
ImageViewimageV
//初始化图片资源
//定义图片的高和宽
//记录当前的缩放比
floatcurrentScale=1;
//控制图片缩放的Matrix对象
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.zoom);
//创建手势检测器
detector=newGestureDetector(this);
imageView=(ImageView)findViewById(R.id.show);
matrix=newMatrix();
//获取被缩放的源图片
bitmap=BitmapFactory.decodeResource(this.getResources(),
R.drawable.wall);
//获得位图的宽
width=bitmap.getWidth();
//获得位图的高
height=bitmap.getHeight();
//设置ImageView初始化显示的图片
imageView.setImageBitmap(BitmapFactory.decodeResource(
this.getResources(),R.drawable.wall));
publicbooleanonTouchEvent(MotionEventevent){
//将该Activity上的触碰时间交个GestureDetector处理
returndetector.onTouchEvent(event);
publicbooleanonDown(MotionEvente){
//TODOAuto-generatedmethodstub
publicvoidonShowPress(MotionEvente){
//TODOAuto-generatedmethodstub
publicbooleanonSingleTapUp(MotionEvente){
publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,
floatdistanceY){
publicvoidonLongPress(MotionEvente){
publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,
floatvelocityY){
velocityX=velocityX&:velocityX;
velocityY=velocityY&-:velocityY;
//感觉手势的速度来计算缩放比,如果velocityX&0,放大图像,否则缩小图像
currentScale+=currentScale*velocityX/4000.0f;
//保证currentScale不会等于0
currentScale=currentScale&0.01?currentScale:0.01f;
//重置Matrix
matrix.setScale(currentScale,currentScale,160,200);
BitmapDrawabletmp=(BitmapDrawable)imageView.getDrawable();
//如果图片还未回收,先强制收回该图片
if(!tmp.getBitmap().isRecycled()){
tmp.getBitmap().recycle();
//根据原始位图和Matrix创建新图片
Bitmapbitmap2=Bitmap.createBitmap(bitmap,0,0,width,height,
matrix,true);
//显示新的位图
imageView.setImageBitmap(bitmap2);
查看一下运行的效果
以上就是我的Android进阶之旅------)android Matrix图片随意的放大缩小,拖动的全文介绍,希望对您学习和使用Android开发有所帮助.
这些内容可能对你也有帮助
更多可查看Android开发列表页。
猜您也会喜欢这些文章kali屏幕放大缩小怎么实现? ubuntu是super+=放大.super+ -缩小_kali吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:12,531贴子:
kali屏幕放大缩小怎么实现? ubuntu是super+=放大.super+ -缩小收藏
kali开启辅助功能后可以实现.
但是我看别人没开辅助功能也能实现
天津专业生产电磁离合器,优质技术服务支撑,多领域合作,现货供应。
登录百度帐号推荐应用

我要回帖

更多关于 微信语音聊天删除恢复 的文章

 

随机推荐