當前位置:首頁 » 安卓系統 » android手勢縮放

android手勢縮放

發布時間: 2022-12-10 04:53:06

1. android 自定義相機拍照界面 手勢設置焦距問題

這個拍照界面是每個廠家的ROM都不一樣的,如果你喜歡小米的拍照界面,你可以把手機系統刷成小米ROM,不能刷的話,你也可以通過第三方APP解決,比如美圖秀秀,360拍照都有手勢設置焦距的功能。

2. appcan平台中使用百度地圖,在android手機上百度地圖無法手勢縮放

你看看你手機型號,不同型號的手機由於Android系統不同(現在許多手機公司都有自己的系統,比如小米手機的小米系統,魅族的手機系統,三星的等等.....都是基於Android 開發的 但是有些模塊被改動,所以會出現對應的不同版本),所以你看看你手機型號 找到自己的手機應用!你也可以刷不同的系統

3. Android 自定義ImageView添加手勢後,移動或縮放怎麼判斷越界的問題

初始化的時候已經進行了縮放

java code

//第一個圖片
float scaleX = w / leftImage.getWidth();
float scaleY = h / leftImage.getHeight();
leftMinScale = scaleX > scaleY ? scaleX : scaleY;
leftMatrix.setScale(leftMinScale, leftMinScale);

4. android手機有哪些手勢操作,能具體點嗎

android手機有哪些手勢操作:

  1. 「點擊」,也叫「單擊」,即輕觸屏幕一下。無論是搭載何種操作系統的觸控手機,這個都是出現頻率最高的動作。點擊主要用來打開程序,還有功能表(抽屜)。

  2. 「點住」,也叫「長按」、「按住」,按住屏幕超過兩秒。此動作通常用來調出「菜單」。某些應用程序在界面空白處長按可以調出菜單;某些條目長按也可以彈出菜單,比如當您需要轉發簡訊時,在簡訊對話界面長按簡訊內容,必然會彈出菜單,菜單中通常會有「轉發」選項。

    在進行文字編輯時,點住文字部分,然後調出遊標進行精準定位。

    當然,此動作也可用於多選、快捷視圖,比如在「圖庫(相冊)」中,默認視圖下,長按相冊文件夾、可對文件夾進行多選操作;打開相冊文件夾後,長按照片,同樣可對照片進行多選操作,選擇完畢後可進行批量操作(發送、刪除)。

  3. 「拖動」,准確來說應該叫做「按住並拖動」。「拖動」主屏幕編輯時的常見動作,比如對桌面「小組件」或者「圖標」進行位置編輯時。另外也用於進度定位,比如播放音樂或者視頻時,需要常常拖動進度條。

  4. 「雙擊」就是短時間內連續雙擊屏幕兩次,主要用於快速縮放,比如瀏覽圖片時雙擊可以快速放大,再次雙擊可以復位;瀏覽網頁時,對文章正文部分雙擊可使文字自適應屏幕,當然某些視頻播放器雙擊可切換至全屏模式。

  5. 滑動,也算是一個常見操作。主要用於查看屏幕無法完全顯示的頁面,功能類似滑鼠的滾輪。此操作主要用於查看圖片、網頁、純文本(簡訊、郵件、筆記)。

    某些視頻播放器還定義了特殊功能,比如亮度調節、快進快退,比如「MX Player」、「VPlayer」。

  6. 「縮放」動作,是查看圖片、網頁時最常見的操作,照相時也可使用縮放手勢來進行調焦。在MX Player中,甚至可以將視頻畫面進行縮放。

5. android 開發視頻界面,視頻如何可以像操作圖片一樣,雙擊放大、拖動、手勢縮放嗎

貌似我的酷派手機播放視頻就可以放大,拖動。是可以實現的,但是沒弄過呢,實現了別忘了分享下額。。

6. 如何通過手勢實現android view 的 縮放 平移

代碼主要分兩部分,一個activity一個view,代碼如下:

packagecom.example.touch;

importandroid.app.Activity;
importandroid.os.Bundle;

{
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
TouchImageViewimg=newTouchImageView(this);
setContentView(img);
}
}



packagecom.example.touch;

importandroid.graphics.Bitmap;
importandroid.graphics.Bitmap.Config;
importandroid.graphics.BitmapFactory;
importandroid.graphics.Canvas;
importandroid.graphics.Matrix;
importandroid.graphics.PointF;
importandroid.util.DisplayMetrics;
importandroid.util.FloatMath;
importandroid.view.MotionEvent;
importandroid.widget.ImageView;

{

floatx_down=0;
floaty_down=0;
PointFstart=newPointF();
PointFmid=newPointF();
floatoldDist=1f;
floatoldRotation=0;
Matrixmatrix=newMatrix();
Matrixmatrix1=newMatrix();
MatrixsavedMatrix=newMatrix();

privatestaticfinalintNONE=0;
privatestaticfinalintDRAG=1;
privatestaticfinalintZOOM=2;
intmode=NONE;

booleanmatrixCheck=false;

intwidthScreen;
intheightScreen;

Bitmapgintama;

publicTouchImageView(){
super(activity);
gintama=BitmapFactory.decodeResource(getResources(),R.drawable.gintama);

DisplayMetricsdm=newDisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
widthScreen=dm.widthPixels;
heightScreen=dm.heightPixels;

matrix=newMatrix();
}

protectedvoidonDraw(Canvascanvas){
canvas.save();
canvas.drawBitmap(gintama,matrix,null);
canvas.restore();
}

publicbooleanonTouchEvent(MotionEventevent){
switch(event.getAction()&MotionEvent.ACTION_MASK){
caseMotionEvent.ACTION_DOWN:
mode=DRAG;
x_down=event.getX();
y_down=event.getY();
savedMatrix.set(matrix);
break;
caseMotionEvent.ACTION_POINTER_DOWN:
mode=ZOOM;
oldDist=spacing(event);
oldRotation=rotation(event);
savedMatrix.set(matrix);
midPoint(mid,event);
break;
caseMotionEvent.ACTION_MOVE:
if(mode==ZOOM){
matrix1.set(savedMatrix);
floatrotation=rotation(event)-oldRotation;
floatnewDist=spacing(event);
floatscale=newDist/oldDist;
matrix1.postScale(scale,scale,mid.x,mid.y);//縮放
matrix1.postRotate(rotation,mid.x,mid.y);//旋轉
matrixCheck=matrixCheck();
if(matrixCheck==false){
matrix.set(matrix1);
invalidate();
}
}elseif(mode==DRAG){
matrix1.set(savedMatrix);
matrix1.postTranslate(event.getX()-x_down,event.getY()
-y_down);//平移
matrixCheck=matrixCheck();
matrixCheck=matrixCheck();
if(matrixCheck==false){
matrix.set(matrix1);
invalidate();
}
}
break;
caseMotionEvent.ACTION_UP:
caseMotionEvent.ACTION_POINTER_UP:
mode=NONE;
break;
}
returntrue;
}

privatebooleanmatrixCheck(){
float[]f=newfloat[9];
matrix1.getValues(f);
//圖片4個頂點的坐標
floatx1=f[0]*0+f[1]*0+f[2];
floaty1=f[3]*0+f[4]*0+f[5];
floatx2=f[0]*gintama.getWidth()+f[1]*0+f[2];
floaty2=f[3]*gintama.getWidth()+f[4]*0+f[5];
floatx3=f[0]*0+f[1]*gintama.getHeight()+f[2];
floaty3=f[3]*0+f[4]*gintama.getHeight()+f[5];
floatx4=f[0]*gintama.getWidth()+f[1]*gintama.getHeight()+f[2];
floaty4=f[3]*gintama.getWidth()+f[4]*gintama.getHeight()+f[5];
//圖片現寬度
doublewidth=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
//縮放比率判斷
if(width<widthScreen/3||width>widthScreen*3){
returntrue;
}
//出界判斷
if((x1<widthScreen/3&&x2<widthScreen/3
&&x3<widthScreen/3&&x4<widthScreen/3)
||(x1>widthScreen*2/3&&x2>widthScreen*2/3
&&x3>widthScreen*2/3&&x4>widthScreen*2/3)
||(y1<heightScreen/3&&y2<heightScreen/3
&&y3<heightScreen/3&&y4<heightScreen/3)
||(y1>heightScreen*2/3&&y2>heightScreen*2/3
&&y3>heightScreen*2/3&&y4>heightScreen*2/3)){
returntrue;
}
returnfalse;
}

//觸碰兩點間距離
privatefloatspacing(MotionEventevent){
floatx=event.getX(0)-event.getX(1);
floaty=event.getY(0)-event.getY(1);
returnFloatMath.sqrt(x*x+y*y);
}

//取手勢中心點
privatevoidmidPoint(PointFpoint,MotionEventevent){
floatx=event.getX(0)+event.getX(1);
floaty=event.getY(0)+event.getY(1);
point.set(x/2,y/2);
}

//取旋轉角度
privatefloatrotation(MotionEventevent){
doubledelta_x=(event.getX(0)-event.getX(1));
doubledelta_y=(event.getY(0)-event.getY(1));
doubleradians=Math.atan2(delta_y,delta_x);
return(float)Math.toDegrees(radians);
}

//將移動,縮放以及旋轉後的圖層保存為新圖片
//本例中沒有用到該方法,需要保存圖片的可以參考
publicBitmapCreatNewPhoto(){
Bitmapbitmap=Bitmap.createBitmap(widthScreen,heightScreen,
Config.ARGB_8888);//背景圖片
Canvascanvas=newCanvas(bitmap);//新建畫布
canvas.drawBitmap(gintama,matrix,null);//畫圖片
canvas.save(Canvas.ALL_SAVE_FLAG);//保存畫布
canvas.restore();
returnbitmap;
}

}

7. 如何解決 Android WebView 里放大與手勢滑動的沖突問題

android手勢沖突解決方法如下:方法一:如代碼中含有ViewFlipper、ScrollView、ViewPager等有手勢反應的組件,且是用FrameLayout包裹的;但卻只想觸發其中某個組件的手勢反應,建議用View.setVisibility()方法,屏蔽掉ViewFlipper、ScrollView、ViewPager等有手勢反應組件(比如ViewFlipper.setVisibility()),到合適的時候,再將被屏蔽的組件顯示出來。方法二:如代碼中含有ViewFlipper、ScrollView、ViewPager等有手勢反應的組件;但卻想根據不同的手勢觸發不同的組件手勢反應,建議繼承並重寫以上組件,並用ViewGroup.onInterceptTouchEvent方法,攔截所有手勢,進而根據不同的手勢觸發不同的組件。

8. android中的webview怎麼才能支持雙指手勢的放大縮小呢,我說android的不是蘋果

支持多點觸控就可以了
webview這個軟體本身就不支持多點觸控..

熱點內容
多個撥號寬頻如何配置 發布:2025-03-16 05:51:35 瀏覽:686
管理員c語言 發布:2025-03-16 05:40:17 瀏覽:340
安卓軟體上的圖案如何更改 發布:2025-03-16 05:35:57 瀏覽:746
2010編譯c中文亂碼 發布:2025-03-16 05:33:40 瀏覽:548
干一杯密碼箱酒多少錢一箱 發布:2025-03-16 05:31:15 瀏覽:356
我的零錢通密碼是多少 發布:2025-03-16 05:04:36 瀏覽:937
編程貓酷跑 發布:2025-03-16 04:58:35 瀏覽:321
控制演算法規律 發布:2025-03-16 04:54:17 瀏覽:965
tcl門鎖原始設置密碼是多少 發布:2025-03-16 04:52:37 瀏覽:992
如何給wifi加密碼 發布:2025-03-16 04:52:05 瀏覽:367