2017-10-04 83 views
-2

我被卡住了,需要幫助。文字動畫和背景更改

enter image description here

如何添加動畫像上的圖像。我想要背景和文本的顏色在應用啓動後1秒順利自動更改。就像一個循環。同時圖標衝動

回答

0

您可以使用屬性動畫改變顏色

int colorFrom = getResources().getColor(R.color.red); 
int colorTo = getResources().getColor(R.color.blue); 
ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo); 
colorAnimation.setDuration(500); // milliseconds 
colorAnimation.addUpdateListener(new AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator animator) { 
     textView.setBackgroundColor((int) animator.getAnimatedValue()); 
    } 

}); 
colorAnimation.start(); 

使用alpha動畫,淡入淡出的textchanging所以在重複是當它在衰落,讓您可以在那個時候更新文本

AlphaAnimation anim = new AlphaAnimation(1.0f, 0.0f); 
     anim.setDuration(500); 
     anim.setRepeatCount(1); 
     anim.setRepeatMode(Animation.REVERSE); 
     txtLabel.startAnimation(anim); 

     anim.setAnimationListener(new Animation.AnimationListener() { 
      @Override 
      public void onAnimationStart(Animation animation) { 

      } 
      @Override 
      public void onAnimationEnd(Animation animation) { 

      } 
      @Override 
      public void onAnimationRepeat(Animation animation) { 
       txtLabel.setText("my next Text"); //for fading back in 
      } 
     }); 

您可以對位圖或圖像視圖上的alpha使用相同的動畫以進行脈衝輸入和輸出。

AlphaAnimation animPulse = new AlphaAnimation(1.0f, 0.0f); 
    animPulse.setDuration(500); 
    animPulse.setRepeatCount(Animation.INFINITE); 
    animPulse.setRepeatMode(Animation.REVERSE); 

    imgPulse.startAnimation(animPulse); 

那當然只是把你的

public void onCreate(){ 
     Handler mMainHandler = new Handler(Looper.prepareMainLooper()); 
     mMainHandler.postDelay(new Runnable(){ 
      doAnimations(); 
     }, 1000); 
} 

然後簡單地把所有的動畫轉換方法和從doAnimations調用它們。祝你好運。

+0

在相同的答案中混合Java和Kotlin可能會讓經驗較少的讀者感到困惑 – Jahnold

+0

大聲笑,謝謝jahnold。我甚至沒有意識到我做到了。我只是複製並粘貼來自不同項目的片段,然後手動鍵入onCreate片段。所以沒有意識到我從兩種不同的語言複製。我只修正了Java。謝謝你收到。 – Sam

0

這裏你去..

我做了代碼來改變背景佈局和文本的顏色。目前我做了隨機顏色,如果你需要預定義的顏色,請讓我知道。下面是我的代碼

  1. activity_main.xml中

`

<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.golevr.background_animation.MainActivity" 
    android:id="@+id/constraint"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Hello World!" 
     android:textSize="30dp" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

</android.support.constraint.ConstraintLayout> 

`

  • MainActivity.java
  • `

    public class MainActivity extends AppCompatActivity { 
    
          // Move your declarations here if you intend on using them after the onCreate() method 
          ConstraintLayout layout; 
          TextView textView; 
    
          @Override 
          protected void onCreate(Bundle savedInstanceState) { 
           super.onCreate(savedInstanceState); 
           setContentView(R.layout.activity_main); 
    
           // Inflate your objects 
           layout = (ConstraintLayout) findViewById(R.id.constraint); 
           textView = (TextView) findViewById(R.id.textView); 
    
           // We change the color to RED for the first time as the program loads 
           layout.setBackgroundColor(Color.RED); 
    
           // We change the color to GREEN for the first time as the program loads 
           textView.setTextColor(Color.GREEN); 
    
           // Create the timer object which will run the desired operation on a schedule or at a given time 
           Timer timer = new Timer(); 
    
           // Create a task which the timer will execute. This should be an implementation of the TimerTask interface. 
           // I have created an inner class below which fits the bill. 
           MyTimer myTimer = new MyTimer(); 
    
           // We schedule the timer task to run after 1000 ms and continue to run every 1000 ms. 
           timer.schedule(myTimer,1000,1000); 
          } 
    
          // An inner class which is an implementation of the TImerTask interface to be used by the Timer. 
          class MyTimer extends TimerTask{ 
           @Override 
           public void run() { 
    
            // This runs in a background thread. 
            // We cannot call the UI from this thread, so we must call the main UI thread and pass a runnable 
            runOnUiThread(new Runnable() { 
             @Override 
             public void run() { 
              Random rand = new Random(); 
    
              // The random generator creates values between [0,256) for use as RGB values used below to create a random color 
              // We call the RelativeLayout object and we change the color. The first parameter in argb() is the alpha. 
              layout.setBackgroundColor(Color.argb(255, rand.nextInt(256),rand.nextInt(256),rand.nextInt(256))); 
              textView.setTextColor(Color.argb(222,rand.nextInt(222),rand.nextInt(222),rand.nextInt(222))); 
             } 
            }); 
           } 
          } 
         } 
    

    `

    這是你想要的嗎?