屏幕幻灯片活动代码:
package com.example.basicgrid;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
public class ScreenSlideActivity extends FragmentActivity {
/**
* The number of pages (wizard steps) to show in this demo.
*/
private static final int NUM_PAGES = 4;
/**
* The pager widget, which handles animation and allows swiping horizontally to access previous
* and next wizard steps.
*/
private ViewPager mPager;
/**
* The pager adapter, which provides the pages to the view pager widget.
*/
private PagerAdapter mPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen_slide);
// Instantiate a ViewPager and a PagerAdapter.
mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
}
@Override
public void onBackPressed() {
if (mPager.getCurrentItem() == 0) {
// If the user is currently looking at the first step, allow the system to handle the
// Back button. This calls finish() on this activity and pops the back stack.
super.onBackPressed();
} else {
// Otherwise, select the previous step.
mPager.setCurrentItem(mPager.getCurrentItem() - 1);
}
}
/**
* A simple pager adapter that represents 4 ScreenSlidePageFragment objects, in
* sequence.
*/
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
public void setCurrentItem (int item, boolean smoothScroll) {
mPager.setCurrentItem(item, smoothScroll);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new screenview1();
case 1:
return new screenview2();
case 2:
return new screenview3();
case 3:
// return new screenview4();
}
return null;
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
我在 src 文件夹结构下有 4 个名为 screenview 1/2/3/4.java 的单独文件
ScreenView1.java 代码:
package com.example.basicgrid;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class screenview1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.tutorial, container, false);
final ImageView animImageView = (ImageView) rootView.findViewById(R.id.ivAnimation);
final TextView tv = (TextView)rootView.findViewById(R.id.text_vp);
animImageView.setBackgroundResource(R.drawable.anim);
tv.setText("The game has 9 small Tic Tac Toe-s which are played simultaneously.");
animImageView.post(new Runnable() {
@Override
public void run() {
AnimationDrawable frameAnimation =
(AnimationDrawable) animImageView.getBackground();
frameAnimation.start();
}
});
return rootView;
}
}`
在@drawable 文件夹中,我有一个名为 anim.xml、anim2.xml 等的文件,每个屏幕视图都有单独的文件。每个动画文件都有作为动画运行的 .png 文件。anim1,anim2 工作得很好。
我的应用程序在 anim3.xml 上使用以下 logcat 崩溃:
12-05 03:23:10.598: D/libEGL(4012): 加载 /system/lib/egl/libEGL_mali.so
12-05 03:23:10.608: D/libEGL(4012): 加载 /system/lib/egl/libGLESv1_CM_mali.so
12-05 03:23:10.618: D/libEGL(4012): 加载 /system/lib/egl/libGLESv2_mali.so
12-05 03:23:10.668: D/OpenGLRenderer(4012): 启用调试模式 0
12-05 03:23:12.730: D/dalvikvm(4012): GC_FOR_ALLOC 释放 2481K,18% 释放 13574K/16387K,暂停 39ms,总共 55ms
12-05 03:23:12.840: D/dalvikvm(4012): GC_FOR_ALLOC 释放 4K,9% 释放 15070K/16387K,暂停 49ms,总共 58ms
12-05 03:23:12.870:I/dalvikvm-heap(4012):将堆(碎片情况)增加到 25.380MB,分配 3456016 字节
12-05 03:23:13.040: D/dalvikvm(4012): GC_CONCURRENT 释放 4K,7% 释放 18477K/19783K,暂停 30ms+3ms,总共 170ms
12-05 03:23:24.552: D/dalvikvm(4012): GC_FOR_ALLOC 释放 1561K,14% 释放 17903K/20679K,暂停 22ms,总共 24ms
12-05 03:23:24.562:I/dalvikvm-heap(4012):将堆(碎片情况)增加到 26.731MB,分配 1971232 字节
12-05 03:23:24.632: D/dalvikvm(4012): GC_CONCURRENT freed 4279K, 23% free 19196K/24647K, paused 13ms+3ms,总共38ms
12-05 03:23:24.682: D/dalvikvm(4012): GC_FOR_ALLOC 释放 1712K,18% 释放 20265K/24647K,暂停 15ms,总共 16ms
12-05 03:23:24.692:I/dalvikvm-heap(4012):将堆(碎片情况)增加到 29.038MB,分配 1971232 字节
12-05 03:23:24.752: D/dalvikvm(4012): GC_CONCURRENT 释放 856K,13% 释放 24972K/28615K,暂停 12ms+3ms,总共 35ms
12-05 03:23:24.802: D/dalvikvm(4012): GC_FOR_ALLOC 释放 1711K,15% 释放 26042K/30599K,暂停 17ms,总共 17ms
12-05 03:23:24.802:I/dalvikvm-heap(4012):将堆(碎片情况)增加到 34.679MB,分配 1971232 字节
12-05 03:23:27.665: D/dalvikvm(4012): GC_FOR_ALLOC 释放 1731K,14% 释放 29917K/34567K,暂停 21ms,总共 21ms
12-05 03:23:27.725: D/dalvikvm(4012): GC_FOR_ALLOC 释放 857K,13% 释放 31841K/36551K,暂停 18ms,总共 18ms
12-05 03:23:27.775: D/dalvikvm(4012): GC_FOR_ALLOC 释放 855K,13% 释放 33767K/38535K,暂停 17ms,总共 17ms
12-05 03:23:27.825: D/dalvikvm(4012): GC_FOR_ALLOC 释放 855K,12% 释放 35693K/40519K,暂停 20ms,总共 20ms
12-05 03:23:29.917: D/AndroidRuntime(4012): 关闭虚拟机
12-05 03:23:29.917: W/dalvikvm(4012): threadid=1: 线程以未捕获的异常退出 (group=0x414d9318)
12-05 03:23:29.937:E/AndroidRuntime(4012):致命异常:主要
12-05 03:23:29.937: E/AndroidRuntime(4012): java.lang.NullPointerException
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.support.v4.app.FragmentStatePagerAdapter.instantiateItem(FragmentStatePagerAdapter.java:116)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.support.v4.view.ViewPager.addNewItem(ViewPager.java:837)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.support.v4.view.ViewPager.populate(ViewPager.java:1053)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.support.v4.view.ViewPager.populate(ViewPager.java:919)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.support.v4.view.ViewPager$3.run(ViewPager.java:249)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.view.Choreographer.doCallbacks(Choreographer.java:555)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.view.Choreographer.doFrame(Choreographer.java:524)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.os.Handler.handleCallback(Handler.java:615)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.os.Handler.dispatchMessage(Handler.java:92)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.os.Looper.loop(Looper.java:137)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 android.app.ActivityThread.main(ActivityThread.java:4744)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 java.lang.reflect.Method.invokeNative(Native Method)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 java.lang.reflect.Method.invoke(Method.java:511)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-05 03:23:29.937: E/AndroidRuntime(4012): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-05 03:23:29.937: E/AndroidRuntime(4012): at dalvik.system.NativeStart.main(Native Method)
有人请解释我在这里做错了什么......
编辑:
anim3.xml 代码:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/d0" android:duration="1000" />
<item android:drawable="@drawable/d1" android:duration="100" />
<item android:drawable="@drawable/d2" android:duration="900" />
<item android:drawable="@drawable/d3" android:duration="1000" />
</animation-list>
tutorial.xml(在 screenview1.java 中调用:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:scaleType="fitXY"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical" >
<ImageView
android:id="@+id/ivAnimation"
android:layout_width="350dp"
android:layout_height="350dp"
android:layout_above="@+id/text_vp"
android:layout_centerHorizontal="true"
android:contentDescription="Animation" />
<TextView
android:id="@+id/text_vp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/ivAnimation"
android:layout_alignParentBottom="true"
android:layout_marginBottom="62dp"
android:gravity="center"
android:paddingBottom="10sp"
android:paddingLeft="10sp"
android:paddingRight="10sp"
android:paddingTop="10sp"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</RelativeLayout>