恢复 .setOnClickListener 的默认动画视图

restore default animation view of .setOnClickListener

The Image of the issue

点击前,“setOnClickListener”的视图如右图

代码setOnClickListener的动作:

card_sales.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            view.startAnimation(fade);
            if(m_inventory.equals("1")){
                card_sales.setBackgroundColor(getResources().getColor(R.color.white_greyish));
                Intent profil = new Intent(getActivity(),InventoryActivity2.class);
                startActivity(profil);
            }else if(m_inventory.equals("0") || m_inventory.equals("") || m_inventory == null){
                Toast.makeText(getActivity(),"Access Denied",Toast.LENGTH_LONG).show();
            }
        }
    });

然后我按下 activity

中的后退按钮
@Override
public void onBackPressed() {
    finish();
    formstock.setVisibility(View.VISIBLE);
}

然后“setOnClickListener”视图如左图所示。

请给我这个问题的解决方案:(

点击按钮 setBackgroundColor 时不应该设置固定颜色。而是使用背景选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <color android:color="@color/white_greyish" />
    </item>
    <item>
        <color android:color="@color/white" />
    </item>
</selector>

将此文件保存在 drawable 文件夹中,并在 XML 中为 card_sales

设置此文件
android:background="@drawable/filename"

恕我直言,您可以使用默认选择器实现更好的效果(波纹)

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

顺便说一句。当你调用 finish() 时,这个 Activity 就会被销毁,所以没有必要调用 formstock.setVisibility(View.VISIBLE);。如果你真的需要在那一刻展示一些东西,并且上面的行会按你预期的那样工作——你的架构非常错误,而且舒尔有一些内存泄漏