Java 比较onClickListener中的两个可绘制
这是我的问题: 在第一次点击按钮时,我设置了视图的背景Java 比较onClickListener中的两个可绘制,java,android,compare,drawable,Java,Android,Compare,Drawable,这是我的问题: 在第一次点击按钮时,我设置了视图的背景 public void clickOnButton(View v){ if(compareDrawable(getResources().getDrawable(R.drawable.green_button), v.getBackground())) { v.setBackgroundResource(R.drawable.red_button); }else{ v.setB
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()))
或
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。如何比较这些对象 为什么您需要比较可绘制的内容来来回更改图像 改为使用
复选框
或其他组合按钮
,并使用选择器
xml和4种状态:
- 检查和按压
- 检查
- 压制
- 违约
<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>