双击点赞出现红心

代码搞起

创建一个类用来自定义

public class MyDoublePlay extends FrameLayout {
    Context contexta ;
    long aLong  = 200;  // 双击之间的时间差
    long time = 0 ; // 上一次的时间

    public MyDoublePlay(@NonNull Context context) {
        super(context);
        init(context);
    }

    public MyDoublePlay(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context);

    }

    public MyDoublePlay(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);

    }

    private void init(Context context) {
        contexta = context;
    }

    @Override
    protected void dispatchDraw(Canvas canvas) {
        super.dispatchDraw(canvas);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {

        switch (ev.getAction()){
            case MotionEvent.ACTION_DOWN:
                long l = System.currentTimeMillis(); //获取当前时间
                long xian = l-time;//当前时间-上一次的时间
                if (xian <aLong){
                    Toast.makeText(contexta, "双击", Toast.LENGTH_SHORT).show();

                    ImageView imageView = new ImageView(getContext());
                    imageView.setImageResource(R.mipmap.detail_icon_like_doublepressed);

                    LayoutParams layoutParams = new LayoutParams(80, 80);
                    layoutParams.leftMargin = (int) ev.getX();
                    layoutParams.topMargin = (int) ev.getY();
                    imageView.setLayoutParams(layoutParams);
                    addView(imageView);
                // 设置动画
                    AnimatorSet animatorSet = new AnimatorSet();
                    animatorSet.play(ScaleA(imageView,"ScaleY",0.2f,1,0.2f,1,1000,0))
                            .with(ScaleA(imageView,"ScaleX",0.2f,1,0.2f,1,1000,0));
                    animatorSet.start();
                    animatorSet.addListener(new AnimatorListenerAdapter() {
                        @Override
                        public void onAnimationEnd(Animator animation) {
                            super.onAnimationEnd(animation);
                            removeViewInLayout(imageView);
                        }
                    });
                }
                time = l;
                break;
        }
        return super.dispatchTouchEvent(ev);
    }

    private ObjectAnimator ScaleA(ImageView imageView, String scaleY, float x, int XM, float y, int YM, int Dou, int deluy) {

        ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(imageView, scaleY, x, XM);
        objectAnimator.setDuration(Dou);
        objectAnimator.setStartDelay(deluy);
        objectAnimator.setRepeatCount(1);

        return objectAnimator;
    }
}

Xml页面

    <com.example.myapp830_.MyDoublePlay
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

在uni-app中实现双击点赞功能可以通过以下步骤进行操作: 1. 首先,在likesCom.vue文件中,给点赞图标添加一个点击事件,用来触发点赞操作。可以使用`@click`指令来绑定点击事件。 2. 在data中添加一个变量`lastClickTime`,用来记录上一次点击的时间戳。 3. 在点击事件的处理函数中,判断当前点击的时间戳与上一次点击的时间戳的差值。如果差值小于一定的阈值(比如500毫秒),则认为是双击操作,执行点赞逻辑;否则,只执行单击操作。 4. 在点赞逻辑中,可以根据需求进行相应的操作,比如增加点赞数、改变点赞图标的样式等。 下面是一个示例代码: ```vue <template> <view class="likes-container"> <u-icon v-for="(item, index) in likesData" :class="['icon-default', `${item.animate}`]" :name="item.name" :color="item.color" :key="item.id" ></u-icon> <u-icon class="icon-style" color="#fc5531" name="heart-fill" @click="handleLike" ></u-icon> </view> </template> <script> import _ from 'lodash'; export default { data() { return { likesData: [], lastClickTime: 0 }; }, methods: { randomNum(min, max) { return Math.floor(Math.random() * (max - min)) + min; }, getLikeParams() { // ...原来的获取参数事件 }, handleLike() { const currentTime = new Date().getTime(); if (currentTime - this.lastClickTime < 500) { // 双击操作 // 执行点赞逻辑,比如增加点赞数、改变点赞图标的样式等 // ... } else { // 单击操作 // ... } this.lastClickTime = currentTime; }, createLikes: _.throttle(function() { // ...原来的点击事件 }, 10) } }; </script> <style lang="scss" scoped> // 原来的样式代码 </style> ``` 通过以上步骤,你可以在uni-app中实现双击点赞功能。根据点击时间戳的差值,可以判断用户是进行了单击操作还是双击操作,并根据需求执行相应的逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值