成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HarmonyOS實戰—滑動事件的三個動作

系統 OpenHarmony
滑動事件里面分為三個動作:按下不松,移動,抬起。在按下 、移動、松開的過程,代碼會不斷去調用本類中的 onTouchEvent方法。

 [[415600]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

Table of Contents

1. 滑動事件的三個動作

2. 實現案例:按下、移動或松開都要修改文本的內容

3. 按下、滑動、松開 參數說明

4. 驗證 按下、 移動、松開的過程,代碼會不斷去調用本類中的 onTouchEvent方法

1. 滑動事件的三個動作

  • 接口名:TouchEventListener
  • 滑動事件里面分為三個動作:按下不松,移動,抬起。
  1. PRIMARY_POINT_DOWN:按下不松。 
  2. POINT_MOVE:移動。 
  3. PRIMARY_POINT_UP:抬起。 
  • 方法返回值:
  1. true 表示繼續執行后面的動作。 
  2. false 表示不會繼續執行后面的動作。 
  • 涉及到如下三個動作,根據用戶按下位置和松下位置,就可以辨別用戶是上、下、左、或右滑動。

  • 如:可以辨別出用戶是向右滑動(簡稱:右滑)

  • 如:可以辨別出用戶是向下滑動(簡稱:下滑)

2. 實現案例:按下、移動或松開都要修改文本的內容

  • 因為要在整個屏幕上滑動,所以要給最外面的布局DirectionalLayout設置滑動事件,加個id
  • 按下、移動或抬起都要修改文本的內容
  • 新建項目:ListenerApplication4

代碼實現

ability_main

  • 采用默認生成的Text文本內容,在此基礎上給DirectionalLayout布局和Text組件分別加上id
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.     ohos:id="$+id:dl" 
  4.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  5.     ohos:height="match_parent" 
  6.     ohos:width="match_parent" 
  7.     ohos:alignment="center" 
  8.     ohos:orientation="vertical"
  9.  
  10.     <Text 
  11.         ohos:id="$+id:text1" 
  12.         ohos:height="match_content" 
  13.         ohos:width="match_content" 
  14.         ohos:background_element="$graphic:background_ability_main" 
  15.         ohos:layout_alignment="horizontal_center" 
  16.         ohos:text="$string:mainability_HelloWorld" 
  17.         ohos:text_size="40vp" 
  18.         /> 
  19.  
  20. </DirectionalLayout> 

MainAbilitySlice

  • 采用當前類作為實現類接口的方式編寫
  1. package com.xdr630.listenerapplication.slice; 
  2.  
  3. import com.xdr630.listenerapplication.ResourceTable; 
  4. import ohos.aafwk.ability.AbilitySlice; 
  5. import ohos.aafwk.content.Intent; 
  6. import ohos.agp.components.Component; 
  7. import ohos.agp.components.DirectionalLayout; 
  8. import ohos.agp.components.Text; 
  9. import ohos.multimodalinput.event.TouchEvent; 
  10.  
  11. public class MainAbilitySlice extends AbilitySlice implements Component.TouchEventListener { 
  12.  
  13.     Text text1 = null
  14.  
  15.     @Override 
  16.     public void onStart(Intent intent) { 
  17.         super.onStart(intent); 
  18.         super.setUIContent(ResourceTable.Layout_ability_main); 
  19.  
  20.         //1.先找到整個布局對象 
  21.         DirectionalLayout dl = (DirectionalLayout) findComponentById(ResourceTable.Id_dl); 
  22.         text1 = (Text) findComponentById(ResourceTable.Id_text1); 
  23.  
  24.         //2.給整個布局添加滑動事件 
  25.         //當我們在整個布局滑動的時候,就會調用本類中的onTouchEvent方法 
  26.         //在按下 移動、松開的過程,代碼會不斷去調用本類中的 onTouchEvent方法 
  27.         dl.setTouchEventListener(this); 
  28.     } 
  29.  
  30.     @Override 
  31.     public void onActive() { 
  32.         super.onActive(); 
  33.     } 
  34.  
  35.     @Override 
  36.     public void onForeground(Intent intent) { 
  37.         super.onForeground(intent); 
  38.     } 
  39.  
  40.     @Override 
  41.     public boolean onTouchEvent(Component component, TouchEvent touchEvent) { 
  42.         //參數1:component表示滑動的組件(布局也是一種組件,所以也可以用component表示布局對象) 
  43.         //實際上此時代表的就是DirectionalLayout布局對象,這個布局是鋪滿整個屏幕的 
  44.         //參數2:touchEvent表示動作對象(按下、滑動、抬起) 
  45.  
  46.         //獲取當前手指對屏幕進行操作(按下、滑動、抬起) 
  47.         int action = touchEvent.getAction(); 
  48.         // 1:表示按下操作 
  49.         // 2:表示松開操作 
  50.         // 3. 表示滑動/移動操作 
  51.  
  52.         if (action == TouchEvent.PRIMARY_POINT_DOWN){ 
  53.             //只要寫按下時需要運行的代碼即可 
  54.             text1.setText("按下"); 
  55.         }else if (action == TouchEvent.POINT_MOVE){ 
  56.             //移動或滑動 
  57.             text1.setText("移動"); 
  58.         }else if (action == TouchEvent.PRIMARY_POINT_UP){ 
  59.             //松開或抬起 
  60.             text1.setText("松開"); 
  61.         } 
  62.         return true
  63.     } 
  • 運行:

  • 按下:

  • 移動:

  • 松開:

3. 按下、滑動、松開 參數說明

可以看到1、2、3數字分別表示PRIMARY_POINT_DOWN(按下)、PRIMARY_POINT_UP(松開)、POINT_MOVE(移動),所以上面代碼的參數也可以直接用數字代替,但為了更直觀表達,建議使用參數,一目了然。

如:使用數字表示

  1. if (action == 1){ 
  2.         //只要寫按下時需要運行的代碼即可 
  3.         text1.setText("按下"); 
  4.     }else if (action == 3){ 
  5.         //移動或滑動 
  6.         text1.setText("移動"); 
  7.     }else if (action == 2){ 
  8.         //松開或抬起 
  9.         text1.setText("松開"); 
  10.     } 

4. 驗證 按下、 移動、松開的過程,代碼會不斷去調用本類中的 onTouchEvent方法

  • 在上述代碼的基礎上,定義成員變量計數器 int count = 0

  • onTouchEvent方法被調用一次,就給加上一次

  • 把count放在每次操作的后面

  • 當按下時,是第一次調用,count應該為1 

  • 移動的時候隨著鼠標不斷移動,也就會不斷地調用onTouchEvent方法,count就會遞增

  • 當松開后,也會調用一次,count在前面數值的基礎上加1

所以,經過驗證:

在 按下 、移動、松開的過程,代碼會不斷去調用本類中的 onTouchEvent方法。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2010-08-04 14:02:08

Flex事件機制

2013-08-01 10:16:06

Linux

2021-08-06 14:35:26

鴻蒙HarmonyOS應用

2023-04-26 11:14:11

IT領導者遠程工作

2022-04-28 16:54:13

事件響應網絡安全安全工具

2020-06-11 09:00:27

SDN網絡架構網絡

2018-02-25 07:23:23

2010-09-02 16:46:52

SOAP協議

2022-02-21 14:14:03

SSH加密密鑰

2022-06-22 08:50:53

ERP系統CTO

2011-12-20 10:41:36

程序員

2023-06-14 20:58:05

2017-09-30 06:45:25

2009-06-26 14:10:24

EJB開發

2011-05-16 16:26:14

EJB

2022-03-22 14:06:19

云安全漏洞云計算

2022-05-07 10:51:42

DevOps左移應用程序

2022-05-12 12:55:28

容器Kubernetes運行容器

2022-05-27 12:40:25

前端測試項目

2020-07-03 07:56:34

Golang編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费黄色大片 | 一级美国黄色片 | 中文字幕在线视频精品 | 一区二区三区福利视频 | 91av亚洲| 日韩免费一级 | 国产精品久久9 | 九九国产在线观看 | 91看片在线观看 | 521av网站 | 欧美 日韩 中文 | 亚洲一区在线播放 | 国际精品久久 | 国产免费一区二区三区 | av色噜噜 | 国产免费一区二区三区免费视频 | 精品国产欧美 | 在线视频久久 | 精品一区二区三区四区 | 日本久久久久久 | 少妇精品久久久久久久久久 | 国产精品99久久久久 | 日韩精品国产精品 | 人妖无码| 久久精品一区二区三区四区 | 亚洲精品国产成人 | 精品久久久久久亚洲精品 | 一区二区激情 | 亚洲成人日韩 | 色接久久| 情侣av| www国产精品 | 亚洲国产成人av | 福利网站导航 | 国产一区91精品张津瑜 | 国产精品波多野结衣 | 中文视频在线 | 精品国产乱码久久久久久影片 | 欧美久久一区二区 | 色欧美片视频在线观看 | 国内毛片毛片毛片毛片 |