人生倒计时
- 今日已经过去小时
- 这周已经过去天
- 本月已经过去天
- 今年已经过去个月
抖音协议点赞脚本源码(抖音点赞协议源码工具)
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、复制抖音作品链接后,找到指定的评论,然后给指定评论点赞,还有叠加评论。(需要上百个号同时点赞)。
2、提供ip代理渠道。
3、要提供协议号渠道。协议号必须稳定,价格要优惠。每天量需供够。
4、需要售后需要做到及时,抖音短视频更新算法,能及时更新协议算法。
5、制作周期短的开发者优先。
6、有这方面经验的大牛优先,有成品的优先。只支持走天盟担保交易,线下转账勿扰。
怎样代理抖音点赞
1、使用第三方应用程序:有许多第三方应用程序可以帮助您代理抖音点赞。这些应用程序可以为您提供自动点赞功能,或者为您提供一定数量的点赞服务,您只需要每天在线操作一次即可。
2、使用虚拟机:您也可以使用虚拟机来代理抖音点赞。此方法要求您拥有虚拟机,并使用它来运行不同的抖音账号,以自动点赞其他抖音账号。
3、使用技术:最后,您可以使用编程技术来实现抖音自动点赞。此方法要求您具备一定的编程技能,并使用抖音的API来开发脚本,以自动点赞其他抖音账号。

