自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HarmonyOS實(shí)戰(zhàn)—滑動(dòng)事件的三個(gè)動(dòng)作

系統(tǒng) OpenHarmony
滑動(dòng)事件里面分為三個(gè)動(dòng)作:按下不松,移動(dòng),抬起。在按下 、移動(dòng)、松開的過程,代碼會(huì)不斷去調(diào)用本類中的 onTouchEvent方法。

 [[415600]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

Table of Contents

1. 滑動(dòng)事件的三個(gè)動(dòng)作

2. 實(shí)現(xiàn)案例:按下、移動(dòng)或松開都要修改文本的內(nèi)容

3. 按下、滑動(dòng)、松開 參數(shù)說明

4. 驗(yàn)證 按下、 移動(dòng)、松開的過程,代碼會(huì)不斷去調(diào)用本類中的 onTouchEvent方法

1. 滑動(dòng)事件的三個(gè)動(dòng)作

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

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

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

2. 實(shí)現(xiàn)案例:按下、移動(dòng)或松開都要修改文本的內(nèi)容

  • 因?yàn)橐谡麄€(gè)屏幕上滑動(dòng),所以要給最外面的布局DirectionalLayout設(shè)置滑動(dòng)事件,加個(gè)id
  • 按下、移動(dòng)或抬起都要修改文本的內(nèi)容
  • 新建項(xiàng)目:ListenerApplication4

代碼實(shí)現(xiàn)

ability_main

  • 采用默認(rèn)生成的Text文本內(nèi)容,在此基礎(chǔ)上給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

  • 采用當(dāng)前類作為實(shí)現(xiàn)類接口的方式編寫
  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.先找到整個(gè)布局對(duì)象 
  21.         DirectionalLayout dl = (DirectionalLayout) findComponentById(ResourceTable.Id_dl); 
  22.         text1 = (Text) findComponentById(ResourceTable.Id_text1); 
  23.  
  24.         //2.給整個(gè)布局添加滑動(dòng)事件 
  25.         //當(dāng)我們?cè)谡麄€(gè)布局滑動(dòng)的時(shí)候,就會(huì)調(diào)用本類中的onTouchEvent方法 
  26.         //在按下 移動(dòng)、松開的過程,代碼會(huì)不斷去調(diào)用本類中的 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.         //參數(shù)1:component表示滑動(dòng)的組件(布局也是一種組件,所以也可以用component表示布局對(duì)象) 
  43.         //實(shí)際上此時(shí)代表的就是DirectionalLayout布局對(duì)象,這個(gè)布局是鋪滿整個(gè)屏幕的 
  44.         //參數(shù)2:touchEvent表示動(dòng)作對(duì)象(按下、滑動(dòng)、抬起) 
  45.  
  46.         //獲取當(dāng)前手指對(duì)屏幕進(jìn)行操作(按下、滑動(dòng)、抬起) 
  47.         int action = touchEvent.getAction(); 
  48.         // 1:表示按下操作 
  49.         // 2:表示松開操作 
  50.         // 3. 表示滑動(dòng)/移動(dòng)操作 
  51.  
  52.         if (action == TouchEvent.PRIMARY_POINT_DOWN){ 
  53.             //只要寫按下時(shí)需要運(yùn)行的代碼即可 
  54.             text1.setText("按下"); 
  55.         }else if (action == TouchEvent.POINT_MOVE){ 
  56.             //移動(dòng)或滑動(dòng) 
  57.             text1.setText("移動(dòng)"); 
  58.         }else if (action == TouchEvent.PRIMARY_POINT_UP){ 
  59.             //松開或抬起 
  60.             text1.setText("松開"); 
  61.         } 
  62.         return true
  63.     } 
  • 運(yùn)行:

  • 按下:

  • 移動(dòng):

  • 松開:

3. 按下、滑動(dòng)、松開 參數(shù)說明

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

如:使用數(shù)字表示

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

4. 驗(yàn)證 按下、 移動(dòng)、松開的過程,代碼會(huì)不斷去調(diào)用本類中的 onTouchEvent方法

  • 在上述代碼的基礎(chǔ)上,定義成員變量計(jì)數(shù)器 int count = 0

  • onTouchEvent方法被調(diào)用一次,就給加上一次

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

  • 當(dāng)按下時(shí),是第一次調(diào)用,count應(yīng)該為1 

  • 移動(dòng)的時(shí)候隨著鼠標(biāo)不斷移動(dòng),也就會(huì)不斷地調(diào)用onTouchEvent方法,count就會(huì)遞增

  • 當(dāng)松開后,也會(huì)調(diào)用一次,count在前面數(shù)值的基礎(chǔ)上加1

所以,經(jīng)過驗(yàn)證:

在 按下 、移動(dòng)、松開的過程,代碼會(huì)不斷去調(diào)用本類中的 onTouchEvent方法。

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2013-08-01 10:16:06

Linux

2010-08-04 14:02:08

Flex事件機(jī)制

2023-04-26 11:14:11

IT領(lǐng)導(dǎo)者遠(yuǎn)程工作

2021-08-06 14:35:26

鴻蒙HarmonyOS應(yīng)用

2022-04-28 16:54:13

事件響應(yīng)網(wǎng)絡(luò)安全安全工具

2020-06-11 09:00:27

SDN網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)

2022-02-21 14:14:03

SSH加密密鑰

2022-06-22 08:50:53

ERP系統(tǒng)CTO

2018-02-25 07:23:23

2010-09-02 16:46:52

SOAP協(xié)議

2011-12-20 10:41:36

程序員

2023-06-14 20:58:05

2017-09-30 06:45:25

2021-10-13 06:59:03

Python技巧編程

2013-12-13 13:23:29

馬云阿里巴巴

2018-05-17 12:00:11

云安全應(yīng)用程序安全

2009-06-26 10:10:00

Hibernate狀態(tài)

2018-11-05 14:48:24

2021-08-11 08:47:31

SASE網(wǎng)絡(luò)安全零信任

2023-12-21 16:25:23

WeChatSnapchatShopee
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)