gpt4 book ai didi

java - 比较 onClickListener 中的两个可绘制对象

转载 作者:行者123 更新时间:2023-11-29 09:01:17 25 4
gpt4 key购买 nike

这是我的问题:

在第一次点击按钮时我设置了 View 的背景

public void clickOnButton(View v){
if(compareDrawable(getResources().getDrawable(R.drawable.green_button), v.getBackground())) {
v.setBackgroundResource(R.drawable.red_button);
}else{
v.setBackgroundResource(R.drawable.green_button);
}
}

比较函数有这段代码的地方:

    public boolean compareDrawable(Drawable d1, Drawable d2){
try{
Bitmap bitmap1 = ((BitmapDrawable)d1).getBitmap();
ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
bitmap1.compress(Bitmap.CompressFormat.JPEG, 100, stream1);
stream1.flush();
byte[] bitmapdata1 = stream1.toByteArray();
stream1.close();

Bitmap bitmap2 = ((BitmapDrawable)d2).getBitmap();
ByteArrayOutputStream stream2 = new ByteArrayOutputStream();
bitmap2.compress(Bitmap.CompressFormat.JPEG, 100, stream2);
stream2.flush();
byte[] bitmapdata2 = stream2.toByteArray();
stream2.close();

return bitmapdata1.equals(bitmapdata2);
}
catch (Exception e) {
// TODO: handle exception
}
return false;
}

我已经尝试使用其中一些比较:

    if(v.getBackground().getConstantState().equals(getResources().getDrawable(R.drawable.green_button).getConstantState()))

    if(getResources().getDrawable(R.drawable.green_button).hashCode() == v.getBackground().hashCode())

xml文件的代码是这样的:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#70c656" />
<stroke
android:width="1dp"
android:color="#53933f" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#70c656"
android:endColor="#53933f"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#53933f" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>

但它们不起作用,每次都返回 false。我如何比较这些对象?

最佳答案

为什么仅仅为了来回更改图像就需要比较 Drawable?

改为使用 CheckBox 或其他 CompoundButton 并使用具有 4 个状态的 selector xml:

  • 检查并按下
  • 已检查
  • 按下
  • 默认

关于java - 比较 onClickListener 中的两个可绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17285214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com