Для кадровой анимации XML-файл состоит из корневого элемента <animation-iist> и дочерних узлов <item>, каждый из которых определяет кадр, который имеет две составляющие:
графический ресурс для кадра;
продолжительность кадра.
Вот примерный XML-файл для анимации фрейма:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/filel android:duration="200" <item
android:drawable="@drawable/file2" android:duration="200" <item android:drawable="@drawable/file3"
android:duration="200"
</animation-list>
Это анимация выполняется только для трех кадров. При установке атрибута android:oneshot списка в true анимация повторится только один раз и после остановки будет содержать последний кадр. Если же атрибут android:oneshot установлен в false, то анимация будет циклической. Этот XML-файл, сохраненный в каталоге res/anim/ проекта, можно добавить как фоновое изображение для представления и затем запустить анимацию.
Давайте рассмотрим создание кадровой анимации на примере. Создайте в Eclipse новый проект и заполните поля в окне New Android Project:
Project name — FrameAnimationView;
Application name — Frame Animation Sample;
Package name — com. samples. f rameanimationxmi;
Create Activity — FrameAnimationActivity.
Листинг. Файл разметки main.xml .
<?xml version=" .0" encoding="utf-8"?> <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fi1l_parent">
<LinearLayout
android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="fi1l_parent">
<Button
android:id="@+id/btn_start" android:layout_height="wrap_content" android:text="Start"
android:layout_width="fi1l_parent" android:layout_weight="Iм/> <Button
android:id="@+id/btn_stop" android:layout_height="wrap_content" android:text="Stop"
android:layout_width="fi1l_parent" android:layout_weight="l"/> </LinearLayout>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Для анимации используем файлы androidl.png, android2.png, android3.png, находящиеся в каталоге Resources/Images/ на диске, прилагаемом к книге. Таким образом, наша анимация будет состоять из трех кадров. Время показа каждого кадра установим в 300 миллисекунд. Все это запишем в XML-файл, который сохраним под именем android_anim.xml в каталоге res/values/.
Полный код файла приведен в листинге 18.16.
Файл анимации andfoidjarwm.xmf
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@drawable/androidl" android:duration="300"/>
<item
android:drawable="@drawable/android2" android:duration="300'7> <item
android:drawable="@drawable/android3" android:duration="300"/>
</animation-list>
Полный код класса деятельности FrameAnimationActivity приведен в ниже.
package com.samples. frameanimationxmi;
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;
public class FrameAnimationActivity extends Activity
public void onCreate(Bundle savedlnstanceState) super.onCreate(savedlnstanceState);
setContentView(R.layout.main);
ImageView image (ImageView)findViewByld(R.id.image); image.setBackgroundResource(R.anim.android_anim);
AnimationDrawable animation
(AnimationDrawable) image.getBackground();
final Button btnStart (Button) findViewByld(R.id.btn_start);
btnStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) mAnim.start() ;
final Button btnStop (Button) findViewByld(R.id.btn_stop);
btnStop.setOnClickListener(new View.OnClickListener() { public void onClick(View
v) mAnim.stop()
Скомпилируйте проект и запустите его на выполнение. У нас получится ани- мированная фигурка андроида, выполняющая физзарядку .
http://ppc.netpeak.ua/ - предоставление услуг эффективной контекстной рекламы Google AdWords, Яндекс.Директ – Одесса, Киев. |