欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Android中如何實現(xiàn)放大與縮小手勢

今天小編給大家分享一下Android中如何實現(xiàn)放大與縮小手勢的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

站在用戶的角度思考問題,與客戶深入溝通,找到開封網(wǎng)站設計與開封網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋開封地區(qū)。

放大與縮小手勢(1)

放大與縮小手勢對應TransformGestureEvent. GESTURE_ZOOM事件類型,使用時要求兩個手指觸摸屏幕,同時向外或向內(nèi)做放縮動作。

放縮手勢操作起來簡單且直觀,在觸摸屏設備上的應用范圍很廣,比如瀏覽網(wǎng)頁時控制頁面上的字體大小,查看地圖時控制地圖的縮放級別等。

下面的實例程序GestureZoom演示了如何使用ZOOM手勢來控制圖片的放縮。對loader對象添加手勢監(jiān)聽器,事件響應函數(shù)根據(jù)手勢動作,實現(xiàn)放大或縮小加載的圖片。主程序Main.as的代碼如下:

package  {  import flash.display.Loader;  import flash.display.Sprite;   import flash.events.Event;  import flash.events.TransformGestureEvent;  import flash.geom.Point;  import flash.net.URLRequest;     public class Main extends AppBase  {  private var loader:Loader;      override protected function init():void   {  //使用Loader對象加載圖片  loader = new Loader();  loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);  addChild(loader);  //加載目錄下的圖片  loader.load( new URLRequest("dog.jpg") );   }   //處理加載事件   private function onLoadComplete(e:Event):void   {  loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete);   //判斷設備是否支持手勢事件   if ( Multitouch.supportsGestureEvents )   {   //對loader對象添加手勢事件監(jiān)聽器   loader.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onZoom);   }   }   //響應放縮手勢   private function onZoom(e:TransformGestureEvent):void   {  //記錄下手勢作用點的位置,采用loader對象中的本地坐標  var p:Point = new Point( e.localX, e.localY );  //將坐標轉(zhuǎn)換為父級容器的本地坐標  var parent_p:Point = this.globalToLocal(loader.localToGlobal(p));  //對loader對象做放縮處理  loader.scaleX *= e.scaleX;  loader.scaleY *= e.scaleY;  //loader對象縮放后,p點在loader對象中的坐標沒有變,但在父級容器中的坐標已發(fā)生變化,因此要//重新計算  var parent_p2:Point = this.globalToLocal(loader.localToGlobal(p));  //移動loader,使得點p在父級容器的坐標保持不變  loader.x += (parent_p.x - parent_p2.x);  loader.y += (parent_p.y - parent_p2.y);   }  }

在本例中,使用Loader對象加載程序目錄下的圖片。加載完成后,對loader對象添加手勢事件監(jiān)聽器,代碼如下:

  1. if ( Multitouch.supportsGestureEvents )  

  2. {  

  3. loader.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onZoom);  

  4. }

放大與縮小手勢(2)

由于Multitouch類的inputMode屬性默認為處理手勢事件,因此無需更改交互模式即可處理手勢事件。使用手勢事件之前,對Multitouch類的supportsGestureEvents屬性做判斷是一個好習慣。事實上,僅僅做這一個判斷并不能確保設備就一定會支持所有的手勢。要做到萬無一失,還需要檢查Multitouch的supportedGestures屬性,檢查的過程如下:

var index:int = -1;  if ( Multitouch.supportedGestures != null )  {  index = Multitouch.supportedGestures.indexOf(TransformGestureEvent.GESTURE_ZOOM);  }  if(Multitouch.supportsGestureEvents && index != -1 )  {  //添加其他代碼  }

supportedGestures是一個Vector類型的數(shù)組,包含了設備支持的所有手勢類型。每個元素代表一個事件類型,如果設備任何一個手勢都不支持,supportedGestures的值為null。因此,要檢測設備是否支持某個手勢,可以使用Vector的indexOf方法進行查找,確保代碼在設備上能夠正確運行。

處理GESTURE_ZOOM 事件時,使用TransformGestureEvent 對象的scaleX與scaleY,即可分別獲取水平方向與垂直方向的縮放值。如果手指向外滑動,表示放大,對應的scaleX與scaleY值大于1,反之小于1。因此,用以下兩行代碼就可以實現(xiàn)放縮控制:

loader.scaleX *= e.scaleX;  loader.scaleY *= e.scaleY;

如果只是簡單地對loader對象做放縮處理,會帶來一個問題,那就是每次都是以loader的原點為中心點進行縮放。而符合邏輯的做法,應該是以手勢動作的作用點為中心進行縮放。也就是說,要將手勢動作的作用點設置為loader對象的注冊點。雖然ActionScript并沒有提供修改可視元件注冊點的功能,但可以模擬這個行為。整個過程并不難,關(guān)鍵在于坐標轉(zhuǎn)換,步驟如下:

步驟1 記錄手勢作用點在loader對象中的本地坐標,記為點p,它將是新的“注冊點”。

步驟2 以loader對象的父級容器為參照物,計算出點p在父級容器中的本地坐標,記為點parent_p。

步驟3 對loader對象進行縮放。

步驟4 計算縮放后點p在父級容器中的本地坐標,記為點parent_p2。

步驟5 移動loader對象的坐標,讓點p在父級容器中的坐標保持不變。

第5步操作的原理是:點p是loader對象的本地坐標,因此對loader對象進行縮放并不影響點p的值,但點p相對父級容器而言位置發(fā)生了變化,所以,根據(jù)縮放前后點p在父級容器中的位移,更改loader對象的坐標,就能夠讓點p在父級容器的坐標保持不變,從而達到了更改loader對象注冊點的目的。起決定性作用的兩行代碼如下:

  1. loader.x += (parent_p.x - parent_p2.x);  

  2. loader.y += (parent_p.y - parent_p2.y);

請注意,程序GestureZoom的屏幕朝向設置為橫屏模式,在程序描述文件中對應的設置項如下:

<aspectRatio>landscape</aspectRatio>

以上就是“Android中如何實現(xiàn)放大與縮小手勢”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章名稱:Android中如何實現(xiàn)放大與縮小手勢
文章來源:http://aaarwkj.com/article2/pdigic.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、品牌網(wǎng)站制作、營銷型網(wǎng)站建設、App開發(fā)、外貿(mào)建站、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
欧美精品久久在线观看| 欧美伦理片三级在线观看| 欧美午夜福利视频观看| 自拍偷拍亚洲精品偷一| 97公开视频在线观看| 亚洲av成人在线不卡| 欧美黄片免费在线视频| 中国人妻一区二区三区| 久久国产精品99亚洲| 亚洲六月丁香六月婷婷| 中文字幕在线感觉av| 不卡视频在线免费观看| 国产探花猛操性感美女| 国产传媒剧情剧资源网站| 麻豆精东传媒一区二区| 国产女主播福利在线播放| 我要看国产一级内射片| 精品国产50部农村老熟女av| 一区二区三区国产激情| 国产女技师口爆在线观看| 日韩三级一区二区三区| 久久这里精品中文字幕| 国产中文字幕乱码中文| 91国产熟女自拍视频| 国产亚洲理论片在线观看| 国产 亚洲 一区 二区| 国产亚洲精品女人久久久| 久久婷婷综合激情亚洲| 亚洲日本精品一区二区三区| 亚洲第一女人天堂av| 人妻熟妇av在线一区二区三区| 手机不卡高清播放一区二区| 亚洲精品乱码国产妇女毛片| 麻豆视传媒短视频网站免费| 日本一二三四卡久久精品| 中文字幕日产乱码一二三区| 亚洲清纯唯美激情四射| 日韩一二三区免费不卡视频| av天堂午夜在线观看| 国产午夜福利片新视觉| 亚洲激情粉嫩中文字幕|