2017-04-10 83 views
0

我在我的應用程序中使用了很多動畫。我在xml文件中創建了所有這些動畫。一切工作正常,但我想用有用的方式編寫代碼。在Android中使用類的動畫添加動畫

下面是空的代碼示例:

RES /阿尼姆(目錄)

type1_anim1.xml 
    type1_anim2.xml 
    type1_anim3.xml 
    type1_anim4.xml 

    type2_anim1.xml 
    type2_anim2.xml 
    type2_anim3.xml 
    type2_anim4.xml 

MainAvtivity.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); 

    } 

現在我做這樣的事情上面我想要一個像這樣的東西。

CustomAnimation.java

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 
    } 
} 

MainActivity.java

public void button1(View view){ 
     anim1(); 
    } 
    public void button2(View view){ 
     anim2(); 
    } 

它是如何可能的。

+0

你需要在代碼中完成什麼類型​​的動畫? (即Fade,Zoom) –

+0

創建util類,並將視圖和上下文傳遞給動畫。 – Krish

回答

1

我使用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); 
      } 
     }); 

    } 
} 

輸出截圖:

enter image description here

+0

我想動畫XML不是在java中我只是想實現使用java類 –

+0

@FiverrProjects現在我更新我的答案,你可以使用上面的代碼 –

+0

傳遞的觀點是一個好辦法?因爲你正在將視圖傳遞給customAnimation。有沒有堆內存問題? –