Tips:
滑动事件:当点击之后,滑动这个模块。
常见场景:轮播图滑动,文章列表上下联动,小说翻页等。
滑动事件常见动作:按下,移动,松开
?前面学习了点击,双击和长按事件,今天会学习一个新的知识点,滑动事件,这是我们实际开发中也会经常使用。
话不多说,直接上手操作上代码:
xml代码文件如下:
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
ohos:id="$+id:view"
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:alignment="center"
ohos:orientation="vertical">
<Text
ohos:id="$+id:text_helloworld"
ohos:height="match_content"
ohos:width="match_content"
ohos:background_element="$graphic:background_ability_main"
ohos:layout_alignment="horizontal_center"
ohos:text="滑动界面"
ohos:text_size="40vp"
/>
</DirectionalLayout>
如上就是我们xml文件,我们发现我给DirectionalLayout组件设置了id,这是因为我们使用滑动事件时,是在操作我们的界面,所以我们需要DirectionalLayout设置id,这样可以获取DirectionalLayout组件,方便我们操作。
接下来就是我们的java代码,来写我们的滑动事件了,代码如下:
package com.example.mydemoslide.slice;
import com.example.mydemoslide.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Component;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.Text;
import ohos.multimodalinput.event.TouchEvent;
public class MainAbilitySlice extends AbilitySlice implements Component.TouchEventListener{
private Text txt;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
//找到txt组件
txt= (Text) findComponentById(ResourceTable.Id_text_helloworld);
//找到我们的表示滑动的组件,因为我们实在整个页面滑动,所以就直接找到DirectionalLayout组件
DirectionalLayout view = (DirectionalLayout) findComponentById(ResourceTable.Id_view);
//给我们的组件绑定滑动的事件
view.setTouchEventListener(this);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
@Override
public boolean onTouchEvent(Component component, TouchEvent touchEvent) {
//获取我们滑动事件状态
int touState = touchEvent.getAction();
//滑动事件按下的状态
if(touState==touchEvent.PRIMARY_POINT_DOWN){
txt.setText("手指点下了");
}
//滑动事件松开的状态
else if(touState==touchEvent.PRIMARY_POINT_UP){
txt.setText("手指松开了");
}
//滑动事件移动的状态
else if(touState==touchEvent.POINT_MOVE){
txt.setText("手指移动了");
}
return true;
}
}
如上,我们先找到我们组件给他绑定我们的滑动事件,而我们的滑动事件,除了给我们一个componet参数,还多了一个touchEvent参数。touchEvent是用来获取我们我们滑动事件的,getAction()可以获取我们当前操作滑动事件的状态。toucheEvent类为我们提供了很多定义属性,其中PRIMARY_POINT_DOWN,PRIMARY_POINT_UP和POINT_MOVE是我们常用的属性,
按下,松开和移动。
效果如下:
初始页面:? ?按下后:? ?松开后:? ?移动中:
?以上就是我们的滑动事件实现效果以及代码,需要源代码的点击[HarmonyOS的长按事件源代码.rar-Java文档类资源-CSDN下载]下载
Tips:
在滑动事件中,return false只会执行一次。
return true才能获取到移动和松开状态的响应。
?
?==================分享不易,都观看到这里了,还不点赞收藏嘛!===================
|