初始化动画类型的对象时,我收到以下警告。
(警告添加为评论)
Animation bottomUp = AnimationUtils.loadAnimation(
android.content.Context, // warning: Expression expected
R.animator.bottom_up // warning: Expected resource of type anim
);
这是一张照片
以下是代码摘要:
public class MainActivity extends AppCompatActivity {
// Class variables go here
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Set onclick listener
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// Animation Code
Animation bottomUp = AnimationUtils.loadAnimation(
android.content.Context, // warning: Expression expected
R.animator.bottom_up // warning: Expected resource of type
);
ViewGroup hiddenPanel = (ViewGroup)findViewById(R.id.hidden_panel);
hiddenPanel.startAnimation(bottomUp);
hiddenPanel.setVisibility(View.VISIBLE);
}
});
}
// Other stuff
}
这是我尝试编译后的log cat
这是我使用错误代码的地方
public class MainActivity extends AppCompatActivity {
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Animation bottomUp = AnimationUtils.loadAnimation(
android.content.Context,
R.animator.bottom_up
);
ViewGroup hiddenPanel = (ViewGroup)findViewById(R.id.hidden_panel);
hiddenPanel.startAnimation(bottomUp);
hiddenPanel.setVisibility(View.VISIBLE);
我找不到错误。
我创建了正确的文件夹和文件。他们在这里。
Here是我获得动画代码的地方。
bottom_up.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="75%p"
android:toYDelta="0%p"
android:fillAfter="true"
android:duration="500"/>
</set>
bottom_down.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0%p"
android:toYDelta="100%p"
android:fillAfter="true"
android:interpolator="@android:anim/linear_interpolator"
android:duration="500" />
</set>
Java
Animation bottomUp = AnimationUtils.loadAnimation(getContext(),
R.anim.bottom_up);
ViewGroup hiddenPanel = (ViewGroup)findViewById(R.id.hidden_panel);
hiddenPanel.startAnimation(bottomUp);
hiddenPanel.setVisibility(View.VISIBLE);
尝试创建anim
文件夹。得到了这个消息。
答案 0 :(得分:1)
第一个参数应该是Context对象。试试&#34;这个&#34;如果你在Activity中使用它。
第二个警告是因为你在animator文件夹中有你的动画(所以它被识别为动画师资源),而AnimationUtils.loadAnimation中的第二个参数是用@AnimRes注释注释的,所以这只是警告/建议你的参数应该是资源anim类型。这只是棉绒警告而不是编译器。
这可以编译:
Animation bottomUp = AnimationUtils.loadAnimation(
this, // if You are in Activity
R.animator.bottom_up
);
要加载Animator,请尝试:
Animator animator = AnimatorInflater.loadAnimator(this, R.animator.bottom_up );
但这不是你想要的。只需将文件移动到动画文件夹即可。
完整示例代码:
package com.example.user.exampleapp;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Animation bottomUp = AnimationUtils.loadAnimation(this,
R.anim.bottom_up);
TextView hiddenPanel = (TextView) findViewById(R.id.textView);
hiddenPanel.startAnimation(bottomUp);
}
}
答案 1 :(得分:0)
首先,你是否在活动中使用它?
我只知道如何处理第一个警告,对不起,但我自己也是业余爱好者。 如果您在活动中,则可以使用以下方式获取上下文:
this
或
getApplicationContext()
如果您不在活动范围内,则必须使用它将您的上下文传递给课程:
public class MainActivity extends Activity(){
ThisClassNeedsContext test;
public MainActivity(Context context){
// other code
test = new ThisClassNeedsContext(context);
}
}
public class ThisClassNeedsContext {
public ThisClassNeedsContext(Context context){
// now you have acces to the context
}
}
我希望这有帮助!祝好运 编辑:Typo解释