Coolfensi科技头像

Coolfensi科技

客服VX:coolfensi,客服QQ:2451468936(QQ/微信客服只做引导和站点通知,不闲聊。有站点内业务疑问以及订单问题的话,请点击【CL-在线售后客服窗口】进行会话)

  • 文章98697
  • 阅读8932496

人生倒计时

  • 今日已经过去小时
  • 这周已经过去
  • 本月已经过去
  • 今年已经过去个月
首页 最新知识 正文内容

抖音协议点赞脚本源码(抖音点赞协议源码工具)

客服VX(coolfensi) 最新知识 2023-03-28 10:03:08 59

Android双击飞小心心-仿抖音点赞

具体的需求就是双击视频任意位置可以冒出向上飞的小心心.之前写的太模糊,回来详细编辑一次,末尾附上源码好了.

自定义一个RelativeLayout,点击其内部任意一位置,将其坐标传入自定义布局,然后add一个?的view,并给这个?加上动画.

public class Love extends RelativeLayout {

private Context context;

    private LayoutParams params;

    private Drawable[]icons =new Drawable[4];

    private Interpolator[]interpolators =new Interpolator[4];

    private int mWidth;

    private int mHeight;

    public Love(Context context, AttributeSet attrs) {

super(context, attrs);

        this.context =context;

        initView();

    }

private void initView() {

// 图片资源

        icons[0] = getResources().getDrawable(R.drawable.heart_red);

        icons[1] = getResources().getDrawable(R.drawable.heart_red);

        icons[2] = getResources().getDrawable(R.drawable.heart_red);

        icons[3] = getResources().getDrawable(R.drawable.heart_red);

        // 插值器

        interpolators[0] =new AccelerateDecelerateInterpolator(); // 在动画开始与结束的地方速率改变比较慢,在中间的时候加速

        interpolators[1] =new AccelerateInterpolator();  // 在动画开始的地方速率改变比较慢,然后开始加速

        interpolators[2] =new DecelerateInterpolator(); // 在动画开始的地方快然后慢

        interpolators[3] =new LinearInterpolator();  // 以常量速率改变

    }

public void addLoveView(float x, float y) {

if (x 100) {

x =101;

        }

if (y 100) {

y =101;

        }

mWidth = (int) (x -100);

        mHeight = (int) (y -100);

        final ImageView iv =new ImageView(context);

        params =new LayoutParams(200, 200);

        iv.setLayoutParams(params);

        iv.setImageDrawable(icons[new Random().nextInt(4)]);

        addView(iv);

        // 开启动画,并且用完销毁

        AnimatorSet set = getAnimatorSet(iv);

        set.start();

        set.addListener(new AnimatorListenerAdapter() {

@Override

            public void onAnimationEnd(Animator animation) {

// TODO Auto-generated method stub

                super.onAnimationEnd(animation);

                removeView(iv);

            }

});

    }

/**

    * 获取动画集合

    *

    * @param iv

    */

    private AnimatorSet getAnimatorSet(ImageView iv) {

// 1.alpha动画

        ObjectAnimator alpha =ObjectAnimator.ofFloat(iv, "alpha", 0.3f, 1f);

        // 2.缩放动画

        ObjectAnimator scaleX =ObjectAnimator.ofFloat(iv, "scaleX", 0.2f, 1f);

        ObjectAnimator scaleY =ObjectAnimator.ofFloat(iv, "scaleY", 0.2f, 1f);

        // 动画集合

        AnimatorSet set =new AnimatorSet();

        set.playTogether(alpha, scaleX, scaleY);

        set.setDuration(2000);

        // 贝塞尔曲线动画

        ValueAnimator bzier = getBzierAnimator(iv);

        AnimatorSet set2 =new AnimatorSet();

        set2.playTogether(set, bzier);

        set2.setTarget(iv);

        return set2;

    }

/**

    * 贝塞尔动画

    */

    private ValueAnimator getBzierAnimator(final ImageView iv) {

// TODO Auto-generated method stub

        PointF[]PointFs = getPointFs(iv); // 4个点的坐标

        BasEvaluator evaluator =new BasEvaluator(PointFs[1], PointFs[2]);

        ValueAnimator valueAnim =ValueAnimator.ofObject(evaluator, PointFs[0], PointFs[3]);

        valueAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

            public void onAnimationUpdate(ValueAnimator animation) {

// TODO Auto-generated method stub

                PointF p = (PointF)animation.getAnimatedValue();

                iv.setX(p.x);

                iv.setY(p.y);

                iv.setAlpha(1 -animation.getAnimatedFraction()); // 透明度

            }

});

        valueAnim.setTarget(iv);

        valueAnim.setDuration(2000);

        valueAnim.setInterpolator(interpolators[new Random().nextInt(4)]);

        return valueAnim;

    }

private PointF[]getPointFs(ImageView iv) {

// TODO Auto-generated method stub

        PointF[]PointFs =new PointF[4];

        PointFs[0] =new PointF(); // p0

        PointFs[0].x = ((int)mWidth);

        PointFs[0].y =mHeight;

        PointFs[1] =new PointF(); // p1

        PointFs[1].x =new Random().nextInt(mWidth);

        PointFs[1].y =new Random().nextInt(mHeight /2) +mHeight /2 +params.height;

        PointFs[2] =new PointF(); // p2

        PointFs[2].x =new Random().nextInt(mWidth);

        PointFs[2].y =new Random().nextInt(mHeight /2);

        PointFs[3] =new PointF(); // p3

        PointFs[3].x =new Random().nextInt(mWidth);

        PointFs[3].y =0;

        return PointFs;

    }

}

?xml version="1.0" encoding="utf-8"?

com.example.technology.lovedemo.Love xmlns:android=""

    android:id="@+id/lovelayout"

    android:layout_width="match_parent"

    android:background="#d2aab7"

    android:layout_height="match_parent"

        android:id="@+id/iamge"

        android:layout_width="300dp"

        android:layout_height="300dp"

        android:layout_centerInParent="true"

        android:background="@drawable/ceshi" /

public class MainActivity extends AppCompatActivity {

private GestureDetector myGestureDetector;

    private Love ll_love;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ll_love = (Love) findViewById(R.id.lovelayout);

        ImageView iamge = findViewById(R.id.iamge);

        //实例化GestureDetector

        myGestureDetector =new GestureDetector(this, new myOnGestureListener());

        //增加监听事件

        iamge.setOnTouchListener(new View.OnTouchListener() {

@Override//可以捕获触摸屏幕发生的Event事件

            public boolean onTouch(View v, MotionEvent event) {

//使用GestureDetector转发MotionEvent对象给OnGestureListener

                myGestureDetector.onTouchEvent(event);

                return true;

            }

});

    }

class myOnGestureListener extends GestureDetector.SimpleOnGestureListener {

@Override

        public boolean onDoubleTap(MotionEvent e) {

ll_love.addLoveView(e.getRawX(),e.getRawY());

            return super.onDoubleTap(e);

        }

}

}

抖音协议点赞脚本源码(抖音点赞协议源码工具) 第1张

抖音点赞协议是什么样子的

抖音点赞协议如下:

1、复制抖音作品链接后,找到指定的评论,然后给指定评论点赞,还有叠加评论。(需要上百个号同时点赞)。

2、提供ip代理渠道。

3、要提供协议号渠道。协议号必须稳定,价格要优惠。每天量需供够。

4、需要售后需要做到及时,抖音短视频更新算法,能及时更新协议算法。

5、制作周期短的开发者优先。

6、有这方面经验的大牛优先,有成品的优先。只支持走天盟担保交易,线下转账勿扰。

怎样代理抖音点赞

1、使用第三方应用程序:有许多第三方应用程序可以帮助您代理抖音点赞。这些应用程序可以为您提供自动点赞功能,或者为您提供一定数量的点赞服务,您只需要每天在线操作一次即可。

2、使用虚拟机:您也可以使用虚拟机来代理抖音点赞。此方法要求您拥有虚拟机,并使用它来运行不同的抖音账号,以自动点赞其他抖音账号。

3、使用技术:最后,您可以使用编程技术来实现抖音自动点赞。此方法要求您具备一定的编程技能,并使用抖音的API来开发脚本,以自动点赞其他抖音账号。

文章目录
    搜索