如何从Assets文件夹加载动画?

时间:2012-07-18 07:03:53

标签: android

我正在为Unity3D开发Android Java插件。

我是我的Android项目,我有一个没有扩展Activity的类,但是我从Unity&中调用了一个函数。发送当前活动。

public class abc{    
  void init(final Activity currActivity, .. and some other params)
  {
    .....
    my code here.//
    .... .
  }    
}

我正在使用

currAnimation_StartAd = AnimationUtils.loadAnimation(currActivity, R.anim.slide_in_right);

在我扩展活动时从 res 文件夹加载我的动画。

现在我的问题是,我无法访问 res 文件夹bcoz 我不再扩展活动。 实际上即使我没有在 R.anim.slide_in_right 上得到任何编译时错误。 但是在运行时,找不到资源 R.anim.slide_in_right:0x7f040001 ..

有没有办法从资源文件夹加载我的动画。

Thankx。

3 个答案:

答案 0 :(得分:1)

在这种情况下你可以使用getApplicationContext()..将你喜欢的代码改为

currAnimation_StartAd =  AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_in_right);

这应该有用。

使用currAnimation_StartAd = AnimationUtils.loadAnimation(currActivity.getApplicationContext,R.anim.slide_in_right)通过gautam解释或更好地解释;

答案 1 :(得分:0)

为了在任何视图上设置动画:

view.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_up_in));
view.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_up_out));

为此,您必须在项目的res下创建anim文件夹并创建xml文件: 的 push_up_in:

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

<强> push_up_out:

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

答案 2 :(得分:0)

您仍然可以通过Application获取Context对象来访问res文件夹。 创建一个应用程序类:

public class app extends Application{
    public static Context c;
    @Override
    public void onCreate() {
        super.onCreate();
        c = this;
    }
    @Override
    public void onTerminate() {
        super.onTerminate();
        c = null;
    }
}

记得在清单中声明。现在你可以通过

到处都有一个背景
app.context