智能小程序 Ray 开发实践——视图容器组件 MovableArea 和 MovableView 介绍

MovableArea

MovableView 的可移动区域。

导入

import { MovableArea } from '@ray-js/ray';

属性说明

属性 类型 默认值 必填 说明 支持平台
scaleArea boolean false 当里面的 MovableView 设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个 MovableArea Web

👉 立即免费领取开发资源,体验涂鸦 MiniApp 小程序开发。

 

MovableView

可移动的视图容器,在页面中可以拖拽滑动。MovableView 必须在 movable-area 组件中,并且必须是直接子节点,否则不能移动。

导入

import { MovableView } from '@ray-js/ray';

属性说明

属性名 类型 默认值 必填 说明 支持平台
direction string none MovableView 的移动方向,属性值有 all、vertical、horizontal、none Web
inertia boolean false MovableView 是否带有惯性 Web
outOfBounds boolean false 超过可移动区域后,movable-view 是否还可以移动 Web
x number 0 定义 x 轴方向的偏移,如果 x 的值不在可移动范围内,会自动移动到可移动范围。改变 x 的值会触发动画 Web
y number 0 定义 y 轴方向的偏移,如果 y 的值不在可移动范围内,会自动移动到可移动范围。改变 y 的值会触发动画 Web
damping number 20 阻尼系数,用于控制 x 或 y 改变时的动画和过界回弹的动画,值越大移动越快 Web
friction number 2 摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于 0,否则会被设置成默认值 Web
disabled boolean false 是否禁用 Web
scale boolean false 是否支持双指缩放,默认缩放手势生效区域是在 MovableView 内 Web
scaleMin number 0.5 定义缩放倍数最小值 Web
scaleMax number 10 定义缩放倍数最大值 Web
scaleValue number 1 定义缩放倍数,取值范围为 0.5 - 10 Web
animation boolean true 是否使用动画 Web
onChange eventhandle 拖动过程中触发的事件,event.detail = {x, y, source} Web
onScale eventhandle 缩放过程中触发的事件,event.detail = {x, y, scale} Web

onChange 返回的 source 表示产生移动的原因

说明
touch 拖动
touchOutOfBounds 超出移动范围
outOfBounds 超出移动范围后的回弹
friction 惯性
空字符串 setData

 

示例代码

  • index.module.less
.item-wrap {
  margin: 16px 0;
  padding: 10px 0;
  border-bottom: 1px solid var(--ty-native-checkbox-border);
}
 
.area-wrap {
  display: flex;
  justify-content: space-around;
}
 
.area {
  flex: none;
  height: 200px;
  width: 200px;
  margin: 10px;
  background-color: #ccc;
  overflow: hidden;
}
 
.block {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  width: 50px;
  background: var(--ty-native-primary-color);
  color: #fff;
}
 
.btn-line {
  text-align: center;
}
 
.btn-line .btn {
  display: inline-block;
  width: 240px;
}
 
.btn-line .sec-btn {
  margin-top: 10px;
}

基本使用
import React, { useState } from 'react';
import {
  View,
  MovableView,
  MovableArea,
  Text,
  Button,
} from '@ray-js/components';
 
import './style.less';
 
export default function () {
  const [x, setX] = useState(0);
  const [y, setY] = useState(0);
 
  const moveFn = () => {
    setX(30);
    setY(30);
  };
  const moveStep = () => {
    setX(x + 10);
    setY(y + 10);
  };
 
  return (
    <View>
      <View className="item-wrap">
        <View className="area-wrap">
          <MovableArea className="area">
            <MovableView className="block" x={x} y={y} direction="all">
              <Text>Text</Text>
            </MovableView>
          </MovableArea>
        </View>
        <View className="btn-wrap">
          <View className="btn-line">
            <Button type="primary" onClick={moveFn} className="btn">
              点击移动到(30px, 30px)
            </Button>
          </View>
          <View className="btn-line">
            <Button type="primary" onClick={moveStep} className="btn sec-btn">
              {`点击移动到(${x + 10}px, ${y + 10}px)`}
            </Button>
          </View>
        </View>
      </View>
    </View>
  );
}

👉 立即免费领取开发资源,体验涂鸦 MiniApp 小程序开发。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 14:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 14:36:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 14:36:03       82 阅读
  4. Python语言-面向对象

    2024-04-28 14:36:03       91 阅读

热门阅读

  1. 人工智能底层自行实现篇3——逻辑回归(上)

    2024-04-28 14:36:03       37 阅读
  2. php视图处理类

    2024-04-28 14:36:03       31 阅读
  3. Flink 实时数仓(二)【ODS 层开发】

    2024-04-28 14:36:03       33 阅读
  4. 旅游景区一体化污水处理设备产品特点

    2024-04-28 14:36:03       32 阅读
  5. 模拟LinkedList实现的双向链表

    2024-04-28 14:36:03       30 阅读
  6. 【论文浅尝】LLM as a System Service on Mobile Devices

    2024-04-28 14:36:03       34 阅读
  7. 使用H5+app在安卓5.1离线环境实现文字转语音

    2024-04-28 14:36:03       31 阅读
  8. 数学与机器学习:共舞于智能时代的双璧

    2024-04-28 14:36:03       29 阅读
  9. 数据结构(并查集,ST表)

    2024-04-28 14:36:03       33 阅读