我创建了一个模拟爆炸的动画:带有此动画的"booom"图像:
blast.xml HyperspaceExplosion on Activity
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/bounce_interpolator"
android:fromXScale="1.0"
android:toXScale="2.0"
android:fromYScale="1.0"
android:toYScale="2.5"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:fillBefore="false"
android:duration="3000"
/>
</set>
Run Code Online (Sandbox Code Playgroud)
当玩家点击炸弹爆炸开始时.在爆炸结束时,我想打开一个Dialog.
炸弹行为的简单代码:
getBombImage().setOnClickListener(
new View.OnClickListener() {
MediaPlayer mp = null;
@Override
public void onClick(View v) {
getExplosionImage().setVisibility(View.VISIBLE);
if(!isSoundOff()){
mp = MediaPlayer.create(getApplicationContext(), R.raw.explosion);
mp.start();
}
getExplosionImage().startAnimation(getHyperspaceExplosion());
getExplosionImage().setVisibility(View.INVISIBLE);
showDialog(1);
}
}
);
Run Code Online (Sandbox Code Playgroud)
问题是爆炸和对话在时间上是冲突的,并且在对话框打开后爆炸继续.
我想要两个事件:在爆炸之前.在爆炸结束时,我想打开对话框.
有人帮我吗?
谢谢你的建议.
我正在尝试在活动中实现类似Tab的UI.这就是我想要它的方式.
有3个按钮,每个按钮与LinearLayout相关联.当用户单击按钮时,当前可见布局淡出,与单击按钮关联的布局淡入视图.
如何才能做到这一点?特别是如何使褪色效果?
当我将canvas方法与canvas对象一起使用时,canvas对象不会旋转.为什么会这样?这是我的代码
package com.example.hello;
import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.view.View; import android.widget.LinearLayout;
public class CanvasDrawExample extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.example);
LinearLayout rl=(LinearLayout)findViewById(R.id.rl);
rl.addView(new CircleView(this));
}
public class CircleView extends View
{
public CircleView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
Paint p=new Paint(Paint.ANTI_ALIAS_FLAG);
p.setStrokeWidth(100);
p.setStyle(Paint.Style.STROKE);
p.setColor(Color.BLUE);
canvas.drawRect(200, 100, 200, …Run Code Online (Sandbox Code Playgroud) 我在开始时FragmentActivity显示一个Fragment,在按下a时显示第二个Button.直到这里,这很容易.但是我对动画有一个问题.
我添加第二个片段:
mTChild.add(R.id.container, mFragChild).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)
为了使它更"活跃",我CustomAnimations在添加之前声明了一个Fragment,它看起来像这样:
mTChild.setCustomAnimations(R.anim.slide_in, R.anim.alpha_out, R.anim.alpha_in, R.anim.slide_out);
mTChild.add(R.id.container, mFragChild).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)
我使用了这个方法setCustomAnimations(int,int,int,int) (参数:enter,exit,popBack enter,popBack exit),你可以在setCustomAnimations文档中看到.只是为了理解我的(基本)动画xml:
在这一步,我得到了我想要的一个幻灯片/向右滑出旧片段上方的新片段.但是通常留下并且消失/出现的旧片段的效果不会发生.
我做错了什么?因为,CustomAnimations发生但不是旧片段(它没有删除).
谢谢你的回答.
android android-animation android-fragments android-fragmentactivity
我需要帮助来设置RelativeLayout的动画.下一张图片说明了我的用法:

现在,当我触摸地图的标记时,它会显示一个RelativeLayout(在图片中调用标记标题),并且向上滑动的动画效果很好,但是,我向下滑动的代码效果不佳,因为它从顶部开始下降的屏幕.我的代码是这样的:
这是它隐藏RelativeLayout的代码:
public void hideSlideUp() {
RelativeLayout slideLayout;
slideLayout = (RelativeLayout) findViewById(R.id.sliding_up);
if (slideLayout.getVisibility() != View.INVISIBLE) {
Animation slide = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);
slideLayout.startAnimation(slide);
slideLayout.setVisibility(View.INVISIBLE);
}
}
Run Code Online (Sandbox Code Playgroud)动画xml文件,现在它的工作有误:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:fromYDelta="-1000"
android:duration="1000" />
</set>
Run Code Online (Sandbox Code Playgroud)我正在尝试创建一个可以支持侧滑动的列表视图.我希望用户能够将listview元素向右拖动,然后在屏幕外面重新调整下面的删除按钮.用户应该能够单击删除按钮从列表视图中删除该元素.我一直关注http://www.youtube.com/watch?v=YCHNAi9kJI4,但只需要帮助将删除按钮添加到后台.有帮助吗?
我正在尝试RecyclerView使用Helper扩展的类在我的行中创建动画ItemTouchHelper.Callback.
默认的"滑动"行为ItemTouchHelper是,如果以足够的速度滑动一行,它将从视图中消失(即,滑动到dimiss).在我的情况下,我想创建一个动画,如果发生这样的事件,导致行直接反弹.
我已经能够创建一个ValueAnimator动画,如果它在屏幕上滑动,将该行动画回视图.但是,问题在于我无法让父ItemTouchHelper类识别x它存储的值已从行的宽度(因此它完全在屏幕外)更改为0(以便它返回到屏幕上).
这意味着每当我在完成自定义动画后与行进行交互时,它就像行仍然在屏幕外,即使它完全可见.这通常意味着按下它意味着行从一个X位置跳到行宽0的X位置,因此再次从屏幕边缘重新生成动画.在完全重置并再次正常运行之前,它会执行此操作几次.
该视频将有助于显示问题.由于前两次滑动不在屏幕外,因此默认行为有效.然后将行从屏幕上滑下并反弹回来,点击该行会显示它从右边缘向后ping:
这是我用来进行动画的代码:
public class CustomItemTouchHelper extends ItemTouchHelper.Callback {
private RecoverAnimation ra;
private boolean animatorRunning;
//...
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
final float per = (dX/viewHolder.itemView.getWidth());
if (per > 0.8F && !animatorRunning && !isCurrentlyActive) {
ra = new RecoverAnimation(c, recyclerView, viewHolder, ItemTouchHelper.ANIMATION_TYPE_SWIPE_CANCEL, …Run Code Online (Sandbox Code Playgroud) 我正在开发一款Android应用.我想在活动上实现这样的动画,如果我们离开activity A那么它应该向左滑动,新的activity B应该从右边滑入.当我离开当前activity B它也应该向右滑动,之前activity A应该从左向右滑动.怎么可能?
顺便说一句,我使用以下代码,但它没有做任何事情..
overridePendingTransition(R.anim.slide_left_in, R.anim.slide_left_out);
我已经为动画幻灯片编写了一些XML代码,如下所示:
slide_left_in.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:fromXDelta="-100%p"
android:toXDelta="0"
android:duration="@android:integer/config_shortAnimTime" />
</set>
Run Code Online (Sandbox Code Playgroud)
slide_left_out.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="@android:integer/config_shortAnimTime" />
</set>
Run Code Online (Sandbox Code Playgroud)
您的帮助将不胜感激.谢谢 !
animation android android-animation android-activity android-studio
我正在尝试使用翻译动画将图像视图从屏幕顶部移动到屏幕中央或屏幕中间,即当活动开始时,图像视图开始从屏幕顶部移动到屏幕中间或屏幕中央,其中图像视图空间的顶部和底部图像视图空间在屏幕上显示的完全相同,就像我们在相对布局中所做的一样。在xml文件的布局中,使用父标签中心为true。通常我们会在facebook和whatsapp应用程序中找到这类动画,它们已将它们用于图像的翻译或移动图像视图动画。到目前为止我做了什么。请帮助我解决这些问题。谢谢。
public class MainActivity extends AppCompatActivity {
ImageView imageview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageview = (ImageView) findViewById(R.id.imagview);
RelativeLayout root = (RelativeLayout) findViewById(R.id.rel);
TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 50);
anim.setInterpolator((new AccelerateDecelerateInterpolator()));
anim.setAnimationListener(new MyAnimationListener());
anim.setDuration(500);
anim.setFillAfter(true);
imageview.startAnimation(anim);
}
});
}
Run Code Online (Sandbox Code Playgroud)