国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android積分簽到上移消失動畫效果

Android積分簽到上移消失動畫效果

2022-02-20 15:16帥氣大果果 Android

這篇文章主要介紹了Android積分簽到上移消失動畫效果大致思路:動畫部分,由一個垂直的平移和一個透明度變化的兩個動畫組成。然后通過AnimationSet將兩個動畫添加到集合,然后開始播放動畫。

還記得以前在某云的時候,有次需求是一個積分簽到,要求點擊簽到按鈕然后有一個動畫效果,比如+30積分然后慢慢往上移動在消失。那會不會做就想著改下需求,直接去掉了動畫效果,而今時隔很久又遇到同樣的問題,比較蛋疼的是我清楚記得當時做過這個功能,但是自己沒有做出來,當然現在做還是不會。自己當年省寫的代碼含淚也要補上。這次吸取教訓,實現這個效果。

Android積分簽到上移消失動畫效果

大致思路:動畫部分,由一個垂直的平移和一個透明度變化的兩個動畫組成。然后通過AnimationSet將兩個動畫添加到集合,然后開始播放動畫。

 更新UI部分,用的是Handler發送消息更新UI

下面看代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.AnimationSet;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
 private ImageView mSignIn;
 private ImageView redDot;
 private TextView signSuccess;
 private AnimationSet set;
 private String isSign;
 private TextView textView;
 private Handler mHandler = new Handler() {
 private int i=100;
 public void handleMessage(android.os.Message msg) {
  switch (msg.what) {
  case 1:// 簽到
   i = i+100;
   mSignIn.setImageResource(R.drawable.icon_signed);//已簽到
   redDot.setVisibility(View.GONE);//圓點隱藏
   // start平移和漸變動畫
   signSuccess.startAnimation(set);
   signSuccess.setVisibility(View.GONE);
   textView.setText("當前積分:"+i);
   // mSignIn.setClickable(false);
   break;
 
  default:
   break;
  }
 }
 };
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 mSignIn = (ImageView) findViewById(R.id.iv_sign);//簽到
 redDot = (ImageView) findViewById(R.id.iv_redpoint);//顯示未簽到的紅圓點
 textView = (TextView) findViewById(R.id.tv_score);//積分
 //簽到添加積分動畫文本
 signSuccess = (TextView) findViewById(R.id.iv_sign_success);
 //  獲取簽到成功圖片的位置
 int left = signSuccess.getLeft();
 int top = signSuccess.getTop();
 // 創建平移和漸變的動畫集合
 // 定義一個平移動畫對象
 TranslateAnimation translate = new TranslateAnimation(left, left, top, top - 100);
 translate.setDuration(2000);
 //translate.setRepeatCount(1);
 // 漸變動畫
 AlphaAnimation alpha = new AlphaAnimation(1, 0);
 alpha.setDuration(2000);
 alpha.setFillAfter(true);
 // 創建動畫集合,將平移動畫和漸變動畫添加到集合中,一起start
 set = new AnimationSet(false);
 set.addAnimation(translate);
 set.addAnimation(alpha);
 }
 /**
 * 簽到
 * @param v
 */
 public void signIn(View v) {
   // if (!TextUtils.isEmpty(isSign)) {
    // if ("0".equals(isSign)) {// 0代表未簽到
    signSuccess.setVisibility(View.VISIBLE);
    // mHandler.sendEmptyMessage(1);
    Message message = new Message();
    message.what = 1;
    mHandler.sendMessage(message);
    // }
   // }
 }
 
}

其中

TranslateAnimation translate = new TranslateAnimation(left, left, top, top - 100);

接收四個參數,我們點擊去看他的源碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * Constructor to use when building a TranslateAnimation from code
 *
 * @param fromXDelta Change in X coordinate to apply at the start of the
 * animation
 * @param toXDelta Change in X coordinate to apply at the end of the
 * animation
 * @param fromYDelta Change in Y coordinate to apply at the start of the
 * animation
 * @param toYDelta Change in Y coordinate to apply at the end of the
 * animation
 */
 public TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta) {
 mFromXValue = fromXDelta;
 mToXValue = toXDelta;
 mFromYValue = fromYDelta;
 mToYValue = toYDelta;
 }

看到了TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta),從參數字面意思都能理解,在結合我們傳遞進去的參數,就是水平沒有變化,垂直位移。

AlphaAnimation alpha = new AlphaAnimation(1, 0);

是透明度變化1代表不透明,0代表完全透明,取值float

為了顯示效果這里可以多次點擊,實際項目中是點擊簽到一般是只能點擊一次。這個需要注意一下修改。

源碼

原文鏈接:https://blog.csdn.net/qq_34471736/article/details/70326777

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 小泽玛丽娅 | 精品视频网| 国产精品久久久久久久久久久新郎 | 中文字幕在线免费视频 | 亚洲国产视频一区二区 | 国产理论在线 | 国产精品久久久久久久久福交 | 黄色一级片在线观看 | 欧美日韩免费在线 | 天天干一干 | 午夜免费剧场 | 国产精品久久久亚洲 | 免费在线观看黄色av | 91精品秘密在线观看 | 精品久久久久久久久久 | 伊人精品成人久久综合软件 | 欧美在线影院 | 国产h片在线观看 | 色网在线观看 | 超黄毛片 | 久草福利在线视频 | 黄色免费网站 | 2012中文版免费观看 | 日本在线视频一区 | 国产另类ts人妖一区二区 | 亚洲欧美日韩在线 | 成人在线一区二区三区 | 欧洲精品久久久 | 激情欧美一区二区三区中文字幕 | 久久久国产精品视频 | 999这里只有是极品 最新中文字幕在线 | 亚洲免费精品 | 国产精品美女久久久久久免费 | 99手机在线视频 | 色玖玖综合 | 亚洲成人精品在线观看 | 福利视频二区 | 久久精品一区二区三区中文字幕 | 人人爱超碰 | 91仓库| 一级毛片免费网站 |