错误的第一个参数类型

时间:2018-06-17 06:44:37

标签: java android animation this android-context

我对Java和Android开发相对较新,所以我很抱歉打扰你。 我想使用AnimationUtils.LoadAnimation()长时间点击创建淡入动画,但我面临错误:

  

错误的第一个参数类型。找到:'android.view.View.OnLongClickListener',必填:'android.content.Context'

这是我的代码:

  BasicsButton.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {

            Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                vib.vibrate(VibrationEffect.createOneShot(500,VibrationEffect.DEFAULT_AMPLITUDE));
            }else{
                vib.vibrate(500);
            }
                Animation in = AnimationUtils.loadAnimation(this, R.anim.fadein);
                blurView.startAnimation(in);
                blurView.setVisibility(View.VISIBLE);
            return true;
        }

我不知道出了什么问题,this示例似乎有用,但不适合我。

提前谢谢你。 :)

2 个答案:

答案 0 :(得分:3)

问题出在以下行

Animation in = AnimationUtils.loadAnimation(this, R.anim.fadein);

由于上述方法是匿名类调用,this引用OnLongClickListener而非活动。

将其更改为:

Animation in = AnimationUtils.loadAnimation(<ActivityName>.this, R.anim.fadein);

答案 1 :(得分:3)

如果您在片段中使用此代码,请使用 getContext()而不是此。

您是否尝试过以下代码:

  Vibrator vib = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
               vib.vibrate(VibrationEffect.createOneShot(500,VibrationEffect.DEFAULT_AMPLITUDE));
            }else{
                vib.vibrate(500);
            }
            Animation in = AnimationUtils.loadAnimation(getContext(), R.anim.slide_in_left);
            blurView.startAnimation(in);
            blurView.setVisibility(View.VISIBLE);