Ticker

6/recent/ticker-posts

Create AnimationDrawable using Java code

In previous exercises, the AnimationDrawable was created using XML. It can be created using Java code also.

Create AnimationDrawable using Java code
Same as previous exercise, you have to copy some graphic in /res/drawable folder, refer to the post "Create frame animation with AnimationDrawable".

Modify main.xml, add a ImageView with predefined layout_width and android:layout_height.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

  <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/hello" />
  <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="Set Alpha" />
  <SeekBar
      android:id="@+id/setalpha"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:progress="255"
      android:max="255" />
  <Button
      android:id="@+id/startanimation"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="Start Animation" />
  <Button
      android:id="@+id/stopanimation"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="Stop Animation" />
  <ImageView
      android:id="@+id/myanimation"
      android:layout_width="114dp"
      android:layout_height="16dp"
      />
</LinearLayout>


Modify the code of the activity.
package com.exercise.AndroidAnimation;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SeekBar;

public class AndroidAnimationActivity extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
    
      ImageView myAnimation = (ImageView)findViewById(R.id.myanimation);

      //Create a new AnimationDrawable
      final AnimationDrawable myAnimationDrawable
       = createAnimationDrawable();

      //apply the new AnimationDrawable
      myAnimation.setImageDrawable(myAnimationDrawable);
    
      SeekBar setAnimationAlpha = (SeekBar)findViewById(R.id.setalpha);
      Button startAnimation = (Button)findViewById(R.id.startanimation);
      Button stopAnimation = (Button)findViewById(R.id.stopanimation);
    
      startAnimation.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    if(!myAnimationDrawable.isRunning()){
     myAnimationDrawable.start();
    }
   }});
    
      stopAnimation.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    if(myAnimationDrawable.isRunning()){
     myAnimationDrawable.stop();
    }
   }});
    
      setAnimationAlpha.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

   @Override
   public void onProgressChanged(SeekBar seekBar, int progress,
     boolean fromUser) {
    myAnimationDrawable.setAlpha(progress);
   }

   @Override
   public void onStartTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
    
   }

   @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
    
   }});

  }

  private AnimationDrawable createAnimationDrawable(){
   
   AnimationDrawable newAnim = new AnimationDrawable();
   
   newAnim.addFrame(getResources().getDrawable(R.drawable.android_1), 500);
   newAnim.addFrame(getResources().getDrawable(R.drawable.android_2), 500);
   newAnim.addFrame(getResources().getDrawable(R.drawable.android_3), 500);
   newAnim.addFrame(getResources().getDrawable(R.drawable.android_4), 500);
   newAnim.addFrame(getResources().getDrawable(R.drawable.android_5), 500);
   newAnim.addFrame(getResources().getDrawable(R.drawable.android_6), 500);
   newAnim.addFrame(getResources().getDrawable(R.drawable.android_7), 500);
   newAnim.setOneShot(false);
   
   return newAnim;
  }

}

إرسال تعليق

0 تعليقات