服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android利用属性动画实现优酷菜单

Android利用属性动画实现优酷菜单

2022-09-21 15:06常利兵 Android

这篇文章主要为大家详细介绍了Android利用属性动画实现优酷菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

利用属性动画实现优酷菜单,供大家参考,具体内容如下

布局文件

?
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
 
<RelativeLayout
 android:layout_width="280dip"
 android:layout_height="140dip"
 android:layout_alignParentBottom="true"
 android:layout_centerHorizontal="true"
 android:id="@+id/level3"
 android:background="@drawable/level3" >
 
 <ImageButton
 android:id="@+id/c1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentBottom="true"
 android:layout_marginBottom="6dip"
 android:layout_marginLeft="12dip"
 android:background="@drawable/channel1" />
 
 <ImageButton
 android:id="@+id/c2"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_above="@id/c1"
 android:layout_marginBottom="12dip"
 android:layout_marginLeft="28dip"
 android:background="@drawable/channel2" />
 
 <ImageButton
 android:id="@+id/c3"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_above="@id/c2"
 android:layout_marginBottom="6dip"
 android:layout_marginLeft="8dip"
 android:layout_toRightOf="@id/c2"
 android:background="@drawable/channel3" />
 
 <ImageButton
 android:id="@+id/c4"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerHorizontal="true"
 android:layout_margin="6dip"
 android:background="@drawable/channel4" />
 
 <ImageButton
 android:id="@+id/c5"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_above="@+id/c6"
 android:layout_marginBottom="6dip"
 android:layout_marginRight="8dip"
 android:layout_toLeftOf="@+id/c6"
 android:background="@drawable/channel5" />
 
 <ImageButton
 android:id="@+id/c6"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_above="@+id/c7"
 android:layout_marginBottom="12dip"
 android:layout_marginRight="28dip"
 android:layout_alignParentRight="true"
 android:background="@drawable/channel6" />
 
 
 <ImageButton
 android:id="@+id/c7"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentBottom="true"
 android:layout_marginBottom="6dip"
 android:layout_marginRight="12dip"
 android:layout_alignParentRight="true"
 android:background="@drawable/channel7" />
</RelativeLayout>
 
<RelativeLayout
 android:layout_width="180dip"
 android:layout_height="90dip"
 android:layout_alignParentBottom="true"
 android:layout_centerHorizontal="true"
 android:id="@+id/level2"
 android:background="@drawable/level2" >
 
 <ImageButton
 android:id="@+id/search"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentBottom="true"
 android:layout_margin="10dip"
 android:background="@drawable/icon_search" />
 
 <ImageButton
 android:id="@+id/menu"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerHorizontal="true"
 android:layout_margin="6dip"
 android:background="@drawable/icon_menu" />
 
 <ImageButton
 android:id="@+id/myyouku"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentBottom="true"
 android:layout_alignParentRight="true"
 android:layout_margin="10dip"
 android:background="@drawable/icon_myyouku" />
</RelativeLayout>
 
<RelativeLayout
 android:layout_width="100dip"
 android:layout_height="50dip"
 android:layout_alignParentBottom="true"
 android:layout_centerHorizontal="true"
 android:background="@drawable/level1" >
 
 <ImageButton
 android:id="@+id/home"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerInParent="true"
 android:background="@drawable/icon_home" />
</RelativeLayout>
 
</RelativeLayout>

核心代码

?
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package com.example.uumusic.menu;
 
import android.content.Context;
import android.view.View;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.Toast;
 
import com.example.uumusic.R;
import com.example.uumusic.fragment.base.BasePager;
import com.example.uumusic.utils.Tools;
 
import butterknife.ButterKnife;
import butterknife.InjectView;
 
/**
 * Created by Administrator on 2017.06.07.0007.
 */
 
public class YoukuMenu extends BasePager {
 
@InjectView(R.id.c1)
ImageButton c1;
@InjectView(R.id.c2)
ImageButton c2;
@InjectView(R.id.c3)
ImageButton c3;
@InjectView(R.id.c4)
ImageButton c4;
@InjectView(R.id.c5)
ImageButton c5;
@InjectView(R.id.c6)
ImageButton c6;
@InjectView(R.id.c7)
ImageButton c7;
@InjectView(R.id.level3)
RelativeLayout level3;
@InjectView(R.id.search)
ImageButton search;
@InjectView(R.id.menu)
ImageButton menu;
@InjectView(R.id.myyouku)
ImageButton myyouku;
@InjectView(R.id.level2)
RelativeLayout level2;
@InjectView(R.id.home)
ImageButton home;
private boolean isLeve12 = true;
private boolean isLeve13 = true;
 
public YoukuMenu(Context context) {
 super(context);
}
 
@Override
public View initView() {
 View view = View.inflate(mContext, R.layout.fragment_youku, null);
 ButterKnife.inject(this,view);
 return view;
}
 
@Override
public void initData() {
 //为按钮设置点击事件
 home.setOnClickListener(new MyOnClickLisetner());
 menu.setOnClickListener(new MyOnClickLisetner());
 
}
 
class MyOnClickLisetner implements View.OnClickListener{
 
 @Override
 public void onClick(View v) {
 switch (v.getId()){
  case R.id.home:
  //当点击home按钮时,开始进行动画的效果
  if (isLeve12){
   isLeve12 = false;
   Tools.hide(level2);
   if (isLeve13){
   isLeve13 = false;
   Tools.hide(level3,200);
   }
  }else {
   isLeve12 = true;
   Tools.show(level2);
  }
  break;
  case R.id.menu:
 
  if (isLeve13){
   isLeve13 = false;
   Tools.hide(level3);
  }else {
   isLeve13 = true;
   Tools.show(level3);
  }
  break;
 }
 }
}
}

动画工具类

?
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
package com.example.uumusic.utils;
 
import android.animation.ObjectAnimator;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.RotateAnimation;
import android.widget.RelativeLayout;
 
/**
 * Created by Administrator on 2017.06.07.0007.
 */
public class Tools {
 
//隐藏布局
public static void hide(ViewGroup view) {
 hide(view, 0);
}
 
//显示布局
public static void show(ViewGroup view) {
 
 //使用属性动画实现菜单的旋转
 ObjectAnimator animator = ObjectAnimator.ofFloat(view,"rotation",180,360);
 //设置动画时长
 animator.setDuration(300);
 animator.start();
 view.setPivotX(view.getWidth()/2);
 view.setPivotY(view.getHeight());
}
 
//延迟隐藏
public static void hide(ViewGroup view, int i) {
 ObjectAnimator animator = ObjectAnimator.ofFloat(view,"rotation",0,180);
 //设置动画时长
 animator.setDuration(300);
 //设置延迟
 animator.setStartDelay(i);
 animator.start();
 view.setPivotX(view.getWidth()/2);
 view.setPivotY(view.getHeight());
}
}

源码:Android利用属性动画实现优酷菜单

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_32890771/article/details/72911030

延伸 · 阅读

精彩推荐