Tyl*_*r I 71 android android-animation
我创建了一个anim.xml文件,如下面的动摇图像视图像IOS图标震动在android中.但它并没有给我同样的结果.有什么好主意吗?
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromDegrees="-2"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="2" />
Run Code Online (Sandbox Code Playgroud)
MH.*_*MH. 159
尝试设置android:repeatMode="reverse".下面的动画给我的Galaxy Nexus一个非常合理的模仿.显然你可以根据自己的喜好微调参数.
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="100"
android:fromDegrees="-5"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:toDegrees="5" />
Run Code Online (Sandbox Code Playgroud)
Sam*_*Sam 57
好动摇动画 ;
res/anim/shake.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:duration="150"
android:fromXDelta="-10%"
android:repeatCount="5"
android:repeatMode="reverse"
android:toXDelta="10%"/>
</set>
Run Code Online (Sandbox Code Playgroud)
如何使用它
final Animation animShake = AnimationUtils.loadAnimation(this, R.anim.shake);
btn_done = (Button) findViewById(R.id.btn_act_confirm_done);
btn_done.startAnimation(animShake);
Run Code Online (Sandbox Code Playgroud)
adn*_*eal 44
你可以试试这个:
shake.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="10"
android:duration="1000"
android:interpolator="@anim/cycle_7" />
Run Code Online (Sandbox Code Playgroud)
cycle_7.xml
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:cycles="7" />
Run Code Online (Sandbox Code Playgroud)
Sim*_*mon 28
尝试使用这个:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:duration="70"
android:fromDegrees="-5"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="5"
android:repeatMode="reverse"
android:interpolator="@android:anim/linear_interpolator"
android:toDegrees="5" />
<translate
android:fromXDelta="-10"
android:toXDelta="10"
android:repeatCount="5"
android:repeatMode="reverse"
android:interpolator="@android:anim/linear_interpolator"
android:duration="70" />
</set>
Run Code Online (Sandbox Code Playgroud)
Teo*_*nke 14
我在Android上创建了一个摇动效果并发布在GitHub中.看看它是否更好.
https://github.com/teoinke/ShakeAnimation
相关代码:
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/overshoot_interpolator"
android:fillAfter="true">
<translate
android:startOffset="100"
android:fromXDelta="0%p"
android:toXDelta="10%p"
android:duration="50" />
<translate
android:startOffset="150"
android:fromXDelta="0%p"
android:toXDelta="-25%p"
android:duration="110" />
<translate
android:startOffset="260"
android:fromXDelta="0%p"
android:toXDelta="25%p"
android:duration="120" />
<translate
android:startOffset="380"
android:fromXDelta="0%p"
android:toXDelta="-20%p"
android:duration="130" />
<translate
android:startOffset="510"
android:fromXDelta="0%p"
android:toXDelta="10%p"
android:duration="140" />
</set>
Run Code Online (Sandbox Code Playgroud)
Hit*_*ahu 14
像这样制造震动效果
首先在anim文件夹中将shake动画定义为shake.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:duration="70"
android:fromDegrees="-5"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="5"
android:repeatMode="reverse"
android:toDegrees="5" />
<translate
android:duration="70"
android:fromXDelta="-10"
android:interpolator="@android:anim/linear_interpolator"
android:repeatCount="5"
android:repeatMode="reverse"
android:toXDelta="10" />
</set>
Run Code Online (Sandbox Code Playgroud)
然后在代码中
if (TextUtils.isEmpty(phone.getText())
|| phone.getText().length() < 10)
{
//shake animation
phone.startAnimation(AnimationUtils.loadAnimation(getActivity(), R.anim.shake));
}
Run Code Online (Sandbox Code Playgroud)
小智 11
这个非常好(虽然不完美)作为iOS"错误的PIN"震动克隆:
final float FREQ = 3f;
final float DECAY = 2f;
// interpolator that goes 1 -> -1 -> 1 -> -1 in a sine wave pattern.
TimeInterpolator decayingSineWave = new TimeInterpolator() {
@Override
public float getInterpolation(float input) {
double raw = Math.sin(FREQ * input * 2 * Math.PI);
return (float)(raw * Math.exp(-input * DECAY));
}
};
shakeField.animate()
.xBy(-100)
.setInterpolator(decayingSineWave)
.setDuration(500)
.start();
Run Code Online (Sandbox Code Playgroud)
小智 8
/**
*
* @param view view that will be animated
* @param duration for how long in ms will it shake
* @param offset start offset of the animation
* @return returns the same view with animation properties
*/
public static View makeMeShake(View view, int duration, int offset) {
Animation anim = new TranslateAnimation(-offset,offset,0,0);
anim.setDuration(duration);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(5);
view.startAnimation(anim);
return view;
}
Run Code Online (Sandbox Code Playgroud)
用:
TextView tv;
makeMeShake(tv,20,5); // it will shake quite fast
Run Code Online (Sandbox Code Playgroud)
对于 Kotlin 用户:
首先创建一个名为shake.xml的动画资源文件。右键单击 Android Studio 中的 res 文件夹,然后单击新建 > Android 资源文件 >在文件名中输入shake,然后在资源类型下拉列表中选择动画。单击确定。
里面shake.xml粘贴以下内容:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:duration="200"
android:fromXDelta="-5%"
android:repeatCount="3"
android:repeatMode="reverse"
android:toXDelta="5%"/>
</set>
Run Code Online (Sandbox Code Playgroud)
现在只需在视图上调用它!
从片段中:
myView.startAnimation(AnimationUtils.loadAnimation(view!!.context, R.anim.shake))
Run Code Online (Sandbox Code Playgroud)
从活动中:
myView.startAnimation(AnimationUtils.loadAnimation(this, R.anim.shake))
Run Code Online (Sandbox Code Playgroud)
(注意 -myView是给要动画的视图的 ID)
如果您想微调动画,只需修改shake.xml.
| 归档时间: |
|
| 查看次数: |
63568 次 |
| 最近记录: |