Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中使用类向视图添加动画_Android_Android Animation - Fatal编程技术网

在android中使用类向视图添加动画

在android中使用类向视图添加动画,android,android-animation,Android,Android Animation,我在我的应用程序中使用了很多动画。我在xml文件中创建所有这些动画。一切都很好,但我想以有用的方式编写代码 以下是虚拟代码示例: Res/anim(目录) mainavity.java // Reset of the code public void button1(View view){ Animation anim1= AnimationUtils.loadAnimation(this, R.anim.type1_anim1); A

我在我的应用程序中使用了很多动画。我在
xml
文件中创建所有这些动画。一切都很好,但我想以有用的方式编写代码

以下是虚拟代码示例:

Res/anim(目录)

mainavity.java

   // Reset of the code
   public void button1(View view){
            Animation anim1= AnimationUtils.loadAnimation(this, R.anim.type1_anim1);
            Animation anim2= AnimationUtils.loadAnimation(this, R.anim.type1_anim2);
            Animation anim3= AnimationUtils.loadAnimation(this, R.anim.type1_anim3);
            Animation anim4= AnimationUtils.loadAnimation(this, R.anim.type1_anim4);

       view1.startAnimation(anim1);
       view2.startAnimation(anim2);
       view3.startAnimation(anim3);
       view4.startAnimation(anim4);

   }
   public void button2(View view){
            Animation anim1= AnimationUtils.loadAnimation(this, R.anim.type2_anim1);
            Animation anim2= AnimationUtils.loadAnimation(this, R.anim.type2_anim2);
            Animation anim3= AnimationUtils.loadAnimation(this, R.anim.type2_anim3);
            Animation anim4= AnimationUtils.loadAnimation(this, R.anim.type2_anim4);

       view1.startAnimation(anim1);
       view2.startAnimation(anim2);
       view3.startAnimation(anim3);
       view4.startAnimation(anim4);

   }
public class CustomAnimation{
    public anim1(){
          // here goes all animations of type1 e.g type1_anim1.xml etc
    }
    public anim2(){
          // here goes all animations of type2 e.g type2_anim1.xml etc
    }
}
  public void button1(View view){
      anim1();
  }
  public void button2(View view){
      anim2();
  }
现在我在做上面的事我想要这个

CustomAnimation.java

   // Reset of the code
   public void button1(View view){
            Animation anim1= AnimationUtils.loadAnimation(this, R.anim.type1_anim1);
            Animation anim2= AnimationUtils.loadAnimation(this, R.anim.type1_anim2);
            Animation anim3= AnimationUtils.loadAnimation(this, R.anim.type1_anim3);
            Animation anim4= AnimationUtils.loadAnimation(this, R.anim.type1_anim4);

       view1.startAnimation(anim1);
       view2.startAnimation(anim2);
       view3.startAnimation(anim3);
       view4.startAnimation(anim4);

   }
   public void button2(View view){
            Animation anim1= AnimationUtils.loadAnimation(this, R.anim.type2_anim1);
            Animation anim2= AnimationUtils.loadAnimation(this, R.anim.type2_anim2);
            Animation anim3= AnimationUtils.loadAnimation(this, R.anim.type2_anim3);
            Animation anim4= AnimationUtils.loadAnimation(this, R.anim.type2_anim4);

       view1.startAnimation(anim1);
       view2.startAnimation(anim2);
       view3.startAnimation(anim3);
       view4.startAnimation(anim4);

   }
public class CustomAnimation{
    public anim1(){
          // here goes all animations of type1 e.g type1_anim1.xml etc
    }
    public anim2(){
          // here goes all animations of type2 e.g type2_anim1.xml etc
    }
}
  public void button1(View view){
      anim1();
  }
  public void button2(View view){
      anim2();
  }
MainActivity.java

   // Reset of the code
   public void button1(View view){
            Animation anim1= AnimationUtils.loadAnimation(this, R.anim.type1_anim1);
            Animation anim2= AnimationUtils.loadAnimation(this, R.anim.type1_anim2);
            Animation anim3= AnimationUtils.loadAnimation(this, R.anim.type1_anim3);
            Animation anim4= AnimationUtils.loadAnimation(this, R.anim.type1_anim4);

       view1.startAnimation(anim1);
       view2.startAnimation(anim2);
       view3.startAnimation(anim3);
       view4.startAnimation(anim4);

   }
   public void button2(View view){
            Animation anim1= AnimationUtils.loadAnimation(this, R.anim.type2_anim1);
            Animation anim2= AnimationUtils.loadAnimation(this, R.anim.type2_anim2);
            Animation anim3= AnimationUtils.loadAnimation(this, R.anim.type2_anim3);
            Animation anim4= AnimationUtils.loadAnimation(this, R.anim.type2_anim4);

       view1.startAnimation(anim1);
       view2.startAnimation(anim2);
       view3.startAnimation(anim3);
       view4.startAnimation(anim4);

   }
public class CustomAnimation{
    public anim1(){
          // here goes all animations of type1 e.g type1_anim1.xml etc
    }
    public anim2(){
          // here goes all animations of type2 e.g type2_anim1.xml etc
    }
}
  public void button1(View view){
      anim1();
  }
  public void button2(View view){
      anim2();
  }

这是怎么可能的。

我使用xml动画编写了简单的自定义动画类

CustomAnimation.java

import android.content.Context;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;

/**
 * Created by Magesh on 4/10/2017.
 */

public class CustomAnimation
{
    private static CustomAnimation mThis = new CustomAnimation();
    public enum AnimationType {
        FadeIn, ZoomIn, Blink
    }
    private CustomAnimation()
    {

    }

    public void startAnimation(Context context, AnimationType animationType, View view)
    {
        Animation animation = null;
        switch (animationType)
        {
            case FadeIn:
            {
                animation = AnimationUtils.loadAnimation(context, R.anim.fade_in);
            }
            break;
            case ZoomIn:
            {
                animation = AnimationUtils.loadAnimation(context, R.anim.zoom_in);
            }
            break;
            case Blink:
            {
                animation = AnimationUtils.loadAnimation(context, R.anim.blink);
            }
            break;
        }

        view.startAnimation(animation);
    }

    public static CustomAnimation getThis()
    {
        return mThis;
    }

}
您只需从下面的活动调用此方法

    import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView mTextView;
    private Button mBtnClick;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView) findViewById(R.id.textView);
        mBtnClick = (Button) findViewById(R.id.button);
        mBtnClick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                CustomAnimation customAnimation = CustomAnimation.getThis();
                customAnimation.startAnimation(getApplicationContext(), CustomAnimation.AnimationType.Blink, mTextView);
            }
        });

    }
}
输出屏幕截图:


您需要在代码中完成哪种类型的动画?(即淡入淡出、缩放)创建util类并传递视图和上下文作为动画。我想要xml动画而不是java动画,我只想用java实现它class@FiverrProjects现在我更新了我的答案,你能用上面的代码传递视图是一个好方法吗?因为您正在将视图传递给customAnimation。是否存在堆内存问题?@FiverProjects您可以将视图传递给任何类,无问题。如果感觉不好,可以将startAnimation()更改为返回方法并返回动画对象。传递上下文可能会引发堆问题。使用getApplicationContext()而不是this或MainActivity.this