Skip to content

Commit 914aec9

Browse files
committed
pathmenu穿透解决
1 parent 97608a0 commit 914aec9

File tree

4 files changed

+189
-50
lines changed

4 files changed

+189
-50
lines changed

res/anim/anim_down_toleft6.xml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:shareInterpolator="false" >
4+
5+
<translate
6+
android:duration="@string/ani_time" android:startOffset="@string/ani_time"
7+
android:fromXDelta="0"
8+
android:fromYDelta="0"
9+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
10+
android:fillAfter="true"
11+
android:toXDelta="100%p"
12+
android:toYDelta="0" >
13+
</translate>
14+
<scale
15+
android:duration="@string/ani_time" android:startOffset="@string/ani_time"
16+
android:fromXScale="1"
17+
android:fromYScale="1"
18+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
19+
android:pivotX="50%" android:fillAfter="true"
20+
android:pivotY="50%"
21+
android:toXScale="0.6"
22+
android:toYScale="0.6" />
23+
24+
<scale
25+
android:duration="@string/ani_time"
26+
android:fromXScale="1"
27+
android:fromYScale="1"
28+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
29+
android:pivotX="50%" android:fillAfter="true"
30+
android:pivotY="50%"
31+
android:toXScale="0.6"
32+
android:toYScale="0.6" />
33+
34+
<translate
35+
android:duration="@string/ani_time"
36+
android:fromXDelta="0"
37+
android:fromYDelta="0"
38+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
39+
android:fillAfter="true"
40+
android:toXDelta="-50%p"
41+
android:toYDelta="0" >
42+
</translate>
43+
</set>

res/anim/anim_fromright_toup6.xml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:shareInterpolator="false" >
4+
<alpha
5+
android:duration="@string/ani_time2"
6+
android:fromAlpha="0" android:fillAfter="true"
7+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
8+
android:toAlpha="1" />
9+
10+
<scale
11+
android:duration="@string/ani_time" android:startOffset="@string/ani_time"
12+
android:fromXScale="0.6"
13+
android:fromYScale="0.6"
14+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
15+
android:pivotX="50%" android:fillAfter="true"
16+
android:pivotY="50%"
17+
android:toXScale="1"
18+
android:toYScale="1" />
19+
20+
<translate
21+
android:duration="@string/ani_time" android:startOffset="@string/ani_time"
22+
android:fromXDelta="0"
23+
android:fromYDelta="0"
24+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
25+
android:fillAfter="true"
26+
android:toXDelta="-50%p"
27+
android:toYDelta="0" >
28+
</translate>
29+
<scale
30+
android:duration="@string/ani_time"
31+
android:fromXScale="0.6"
32+
android:fromYScale="0.6"
33+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
34+
android:pivotX="50%" android:fillAfter="true"
35+
android:pivotY="50%"
36+
android:toXScale="1"
37+
android:toYScale="1" />
38+
39+
<translate
40+
android:duration="@string/ani_time"
41+
android:fromXDelta="0"
42+
android:fromYDelta="0"
43+
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
44+
android:fillAfter="true"
45+
android:toXDelta="50%p"
46+
android:toYDelta="0" >
47+
</translate>
48+
49+
</set>

res/values/strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,9 @@
2525
<item>english</item>
2626
<item>fun</item>
2727
</string-array>
28+
29+
<string name="ani_time">250</string>
30+
<string name="ani_time2">500</string>
31+
<string name="ani_timestartof">150</string>
2832

2933
</resources>

src/com/dreamteam/custom/ui/PathAnimations.java

Lines changed: 93 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -7,69 +7,112 @@
77
import android.view.animation.AnticipateInterpolator;
88
import android.view.animation.OvershootInterpolator;
99
import android.view.animation.RotateAnimation;
10+
import android.view.animation.ScaleAnimation;
1011
import android.view.animation.TranslateAnimation;
1112
import android.widget.ImageButton;
1213

13-
public class PathAnimations{
14-
15-
private static int xOffset = 15;
16-
private static int yOffset = -13;
14+
public class PathAnimations
15+
{
1716

18-
public static void initOffset(Context context){//由布局文件
19-
xOffset = (int) (10.667 *context.getResources().getDisplayMetrics().density);
20-
yOffset = -(int) (8.667 *context.getResources().getDisplayMetrics().density);
17+
private static int xOffset = 16;
18+
private static int yOffset = -13;
19+
20+
public static Animation getScaleAnimation(float fromX, float toX,
21+
float fromY, float toY, int durationMillis)
22+
{
23+
ScaleAnimation scale = new ScaleAnimation(fromX, toX, fromY, toY,
24+
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
25+
0.5f);
26+
scale.setDuration(durationMillis);
27+
scale.setFillAfter(true);
28+
return scale;
29+
}
30+
31+
public static void initOffset(Context context)
32+
{
33+
// 由布局文件
34+
xOffset = (int) (10.667 * context.getResources().getDisplayMetrics().density);
35+
yOffset = -(int) (8.667 * context.getResources().getDisplayMetrics().density);
2136
}
22-
23-
public static Animation getRotateAnimation(float fromDegrees ,float toDegrees,int durationMillis){
37+
38+
public static Animation getRotateAnimation(float fromDegrees,
39+
float toDegrees, int durationMillis)
40+
{
2441
RotateAnimation rotate = new RotateAnimation(fromDegrees, toDegrees,
25-
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
42+
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
43+
0.5f);
2644
rotate.setDuration(durationMillis);
2745
rotate.setFillAfter(true);
2846
return rotate;
2947
}
3048

31-
public static void startAnimationsIn(ViewGroup viewgroup,int durationMillis) {
32-
for (int i = 0; i < viewgroup.getChildCount(); i++) {
33-
ImageButton inoutimagebutton = (ImageButton) viewgroup
34-
.getChildAt(i);
35-
inoutimagebutton.setVisibility(0);
36-
MarginLayoutParams mlp = (MarginLayoutParams) inoutimagebutton.getLayoutParams();
37-
Animation animation = new TranslateAnimation(mlp.rightMargin-xOffset,0F,yOffset + mlp.bottomMargin, 0F);
38-
39-
animation.setFillAfter(true);animation.setDuration(durationMillis);
40-
animation.setStartOffset((i * 100)
41-
/ (-1 + viewgroup.getChildCount()));
42-
animation.setInterpolator(new OvershootInterpolator(2F));
43-
inoutimagebutton.startAnimation(animation);
44-
49+
public static void startAnimationsIn(ViewGroup viewgroup, int durationMillis)
50+
{
51+
for (int i = 0; i < viewgroup.getChildCount(); i++)
52+
{
53+
ImageButton inoutimagebutton = (ImageButton) viewgroup
54+
.getChildAt(i);
55+
inoutimagebutton.setVisibility(0);
56+
inoutimagebutton.setFocusable(true);
57+
inoutimagebutton.setClickable(true);
58+
MarginLayoutParams mlp = (MarginLayoutParams) inoutimagebutton
59+
.getLayoutParams();
60+
Animation animation = new TranslateAnimation(Animation.ABSOLUTE,
61+
mlp.rightMargin - xOffset, Animation.RELATIVE_TO_SELF, 0F,
62+
Animation.ABSOLUTE, yOffset + mlp.bottomMargin,
63+
Animation.RELATIVE_TO_SELF, 0F);
64+
65+
animation.setFillAfter(true);
66+
animation.setDuration(durationMillis);
67+
animation.setStartOffset((i * 100)
68+
/ (-1 + viewgroup.getChildCount()));
69+
animation.setInterpolator(new OvershootInterpolator(2F));
70+
inoutimagebutton.startAnimation(animation);
71+
4572
}
4673
}
47-
public static void startAnimationsOut(ViewGroup viewgroup,int durationMillis) {
48-
for (int i = 0; i < viewgroup.getChildCount(); i++) {
49-
final ImageButton inoutimagebutton = (ImageButton) viewgroup
50-
.getChildAt(i);
51-
MarginLayoutParams mlp = (MarginLayoutParams) inoutimagebutton.getLayoutParams();
52-
Animation animation = new TranslateAnimation(0F,mlp.rightMargin-xOffset, 0F,yOffset + mlp.bottomMargin);
53-
54-
animation.setFillAfter(true);animation.setDuration(durationMillis);
55-
animation.setStartOffset(((viewgroup.getChildCount()-i) * 100)
56-
/ (-1 + viewgroup.getChildCount()));//顺序倒一下比较舒服
57-
animation.setInterpolator(new AnticipateInterpolator(2F));
58-
animation.setAnimationListener(new Animation.AnimationListener() {
59-
@Override
60-
public void onAnimationStart(Animation arg0) {}
61-
@Override
62-
public void onAnimationRepeat(Animation arg0) {}
63-
@Override
64-
public void onAnimationEnd(Animation arg0) {
65-
// TODO Auto-generated method stub
66-
inoutimagebutton.setVisibility(8);
67-
}
68-
});
69-
inoutimagebutton.startAnimation(animation);
70-
}
71-
74+
75+
public static void startAnimationsOut(ViewGroup viewgroup,
76+
int durationMillis)
77+
{
78+
for (int i = 0; i < viewgroup.getChildCount(); i++)
79+
{
80+
final ImageButton inoutimagebutton = (ImageButton) viewgroup
81+
.getChildAt(i);
82+
MarginLayoutParams mlp = (MarginLayoutParams) inoutimagebutton
83+
.getLayoutParams();
84+
Animation animation = new TranslateAnimation(0F, mlp.rightMargin
85+
- xOffset, 0F, yOffset + mlp.bottomMargin);
86+
87+
animation.setFillAfter(true);
88+
animation.setDuration(durationMillis);
89+
animation.setStartOffset(((viewgroup.getChildCount() - i) * 100)
90+
/ (-1 + viewgroup.getChildCount()));// 顺序倒一下比较舒服
91+
animation.setInterpolator(new AnticipateInterpolator(2F));
92+
animation.setAnimationListener(new Animation.AnimationListener()
93+
{
94+
@Override
95+
public void onAnimationStart(Animation arg0)
96+
{
97+
}
98+
99+
@Override
100+
public void onAnimationRepeat(Animation arg0)
101+
{
102+
}
103+
104+
@Override
105+
public void onAnimationEnd(Animation arg0)
106+
{
107+
// TODO Auto-generated method stub
108+
inoutimagebutton.setVisibility(8);
109+
inoutimagebutton.setFocusable(false);
110+
inoutimagebutton.setClickable(false);
111+
}
112+
});
113+
inoutimagebutton.startAnimation(animation);
114+
}
115+
72116
}
73117

74-
75118
}

0 commit comments

Comments
 (0)