在onClick中为View添加涟漪效果

您好我正在尝试为View添加一个涟漪效果onClick方法,但是这个没有用。 我的所有物品都有ID,但我不知道怎么称呼它

这是一个代码。

@Override public void onClick(View v) { int[] attrs = new int[]{R.attr.selectableItemBackground}; TypedArray typedArray = getActivity().obtainStyledAttributes(attrs); int backgroundResource = typedArray.getResourceId(0, 0); v.setBackgroundResource(backgroundResource); switch (v.getId()) { case ACTION_PLAY_ID: Log.d(MainActivity.TAG, getString(R.string.detail_action_play)); v.setBackgroundResource(backgroundResource); Intent intent = new Intent(getActivity(), PlayerActivity.class); intent.putExtra(Video.VIDEO_TAG, videoModel); startActivity(intent); break; case ACTION_BOOKMARK_ID: if (bookmarked) { v.setBackgroundResource(backgroundResource); deleteFromBookmarks(); ((ImageView) v).setImageDrawable(res.getDrawable(R.drawable.star_outline)); } else { v.setBackgroundResource(backgroundResource); addToBookmarks(); ((ImageView) v).setImageDrawable(res.getDrawable(R.drawable.star)); } break; case ACTION_REMINDER_ID: if (!isReminderSet) { createReminderDialog((ImageView) v); } else { cancelReminder(liveTvProgram.getProgramId()); ((ImageView) v).setImageDrawable(res.getDrawable(R.drawable.alarm)); } break; } } 

对于Lubomir

我有类似的东西,但也没有工作:

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.item_detail, container, false); ButterKnife.bind(this, view); View myView = view.findViewById(R.id.actions_container); int[] attrs = new int[]{R.attr.selectableItemBackground}; TypedArray typedArray = getActivity().obtainStyledAttributes(attrs); int backgroundResource = typedArray.getResourceId(0, 0); myView.setBackgroundResource(backgroundResource); loadImage(); init(); return view; } 

ImageViews(actionbuttons)正在java中为LinearLayout actions_container创建

                     

我的xml涟漪效果文件也是这样的:

            

    可点击的视图

    通常,常规按钮的涟漪效果默认在API 21中有效,对于其他可触摸视图,可以通过指定

     android:background="?android:attr/selectableItemBackground"> 

    在代码中:

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); View myView = findViewById(R.id.myView); int[] attrs = new int[]{R.attr.selectableItemBackground}; TypedArray typedArray = getActivity().obtainStyledAttributes(attrs); int backgroundResource = typedArray.getResourceId(0, 0); myView.setBackgroundResource(backgroundResource); } 

    你可以加:

       

    创建涟漪背景

    view_background.xml

     < ?xml version="1.0" encoding="utf-8"?>     

    view_noraml.xml //这是您正常查看的方式

     < ?xml version="1.0" encoding="utf-8"?>      

    现在将view_background设置为您的视图

        

    解决方案对我来说很简单。

    这是涟漪效应:

      < ?xml version="1.0" encoding="utf-8"?>        

    然后在类上我需要搜索函数setBackground

    然后我需要声明一个drawable项目。 像这样的东西:

      @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { v.setBackground(res.getDrawable(R.drawable.ripple_effect_for_buttons)); scrollContainer(false); } else { v.setBackground(null); if (recommendation.getFocusedChild() != null) { scrollContainer(true); } } } 

    和YUPII一起工作