2014-02-10 4 views
1

Я занимаюсь классом Coursera в Android-программировании. Вот иллюстрация того, что я пытаюсь сделать ...Android - Как сделать анимацию изображения на определенный интервал?

Slide and fade interval

Вот код, который я до сих пор ...

XML:

<Button 
     android:id="@+id/startbutton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/leftfoot" 
     android:layout_alignRight="@+id/leftfoot" 
     android:onClick="startRhythmandAnimation" 
     android:text="@string/start_button" /> 

Java:

public class Assignment3MainActivity extends Activity { 

private View mMileTimeGoal; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_assignment3_main); 
    mMileTimeGoal = findViewById(R.id.miletimegoal); 
} 

public void startRhythmandAnimation() { 
    String MileTime = mMileTimeGoal.getContext().toString(); 
    String[] time_array = MileTime.split(":"); 
    int hours = Integer.parseInt(time_array[0]); 
    int minutes = Integer.parseInt(time_array[1]); 
    int seconds = Integer.parseInt(time_array[2]); 
    int duration = 3600 * hours + 60 * minutes + seconds; 
    int steps_per_second = 3; 

    int running_rate = duration * steps_per_second; 

    View rightfoot = findViewById(R.id.rightfoot); 
    View leftfoot = findViewById(R.id.leftfoot); 

    rightfoot.setVisibility(View.VISIBLE); 
    Animation anim = AnimationUtils.makeInChildBottomAnimation(this); 
    rightfoot.startAnimation(anim); 

    leftfoot.setVisibility(View.VISIBLE); 
    leftfoot.startAnimation(anim); 
} 

Любые идеи о том, как сформировать мой алгоритм, который будет скользить и исчезать в правой части экрана и влево-вправо?

Должен ли я использовать цикл while и запускать какой-то таймер?

ответ

2

активность

private Handler mHandler;  
private long mInterval = 1000; 
private View mLeftfoot; 
private Animation mFootAnim; 

public void onCreate(Bundle bundle) { 
    ... 
    mHandler = new Handler(); //.os package class when importing 
    mLeftfoot = findViewById(R.id.leftfoot); 
    mFootAnim = AnimationUtils.loadAnimation(this, R.anim.foot); 
    stepRecursive(); 
} 

private void stepRecursive() { 
    mHandler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      mLeftFoot.startAnimation(mFootAnim); 
      stepRecursive(); 
     } 
    }, mInterval); 
} 

/res/anim/foot.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromYDelta="0" android:toYDelta="-15" android:duration="400"/> 
    <alpha android:fromAlpha="1.0" android:toAlpha="0" android:duration="400" /> 
</set> 

Thats сразу в верхней части моей головы (таким образом, непроверенные), но должно быть достаточно, чтобы ты в праве направление

+0

Большое спасибо! Несколько вопросов, хотя ... Могу ли я просто поместить содержимое foot.xml в свой /layout/main.xml? Кроме того, установлен ли интервал? Могу ли я изменить mInterval, чтобы он регулировался в соответствии с целью пользователя Mile Time Goal? – StacyM

+0

Да отрегулируйте интервал для вашей цели времени. Нет, вы не можете объединить XML, причина в том, что в каталоге res есть разные папки, они служат для разных целей. –

+0

Если у вас есть время, просмотрите мои последние исключения Logcat: http://stackoverflow.com/questions/21671129/ android-illegalstateexception-could-not-execute-method-of-the-activity-cause – StacyM

Смежные вопросы