Android图片的交集或补集

package com.example.animotiontest;


import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;




public class MainActivity extends Activity {
Bitmap outBitmap;
 
public Bitmap getProgressBtimap(Context context, Bitmap sourceBitmap,
int battery) {
recycleBitmap(outBitmap);
float x = sourceBitmap.getWidth();
float y = sourceBitmap.getHeight();
outBitmap = Bitmap.createBitmap(sourceBitmap.getWidth(),
sourceBitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(outBitmap);
float translate_height = (float) (battery * 1.0 / 100) * sourceBitmap.getHeight();
final Paint paint = new Paint();
final int color = 0xff038D94;
final Rect ovalRect = new Rect(0, 0, sourceBitmap.getWidth(),
sourceBitmap.getHeight());
canvas.drawColor(0x00000000);


 


    PaintFlagsDrawFilter pfd = new PaintFlagsDrawFilter(0,
Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
canvas.setDrawFilter(pfd);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
paint.setColor(color);
canvas.drawCircle(x/2, y/2, x/2-4, paint);
canvas.translate(0, sourceBitmap.getHeight() - translate_height);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(sourceBitmap, ovalRect, ovalRect, paint);
return outBitmap;
}
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView iv_reminder =(ImageView) findViewById(R.id.widget_battery_remainder_iv);
        Drawable drawable = getResources().getDrawable(R.drawable.power_bg_progress_13);                
BitmapDrawable bd = (BitmapDrawable)drawable;
Bitmap bitmap = getProgressBtimap(this,bd.getBitmap(),50);
if(bitmap!=null&&!bitmap.isRecycled()){
iv_reminder.setImageBitmap(bitmap);
}
    }
void recycleBitmap(Bitmap bitmap) {
if (bitmap != null && !bitmap.isRecycled()) {
bitmap.recycle();
}
}
}
### 回答1: 可以使用 JavaScript 中的 filter 和 includes 方法来查找两个数组的交集补集。具体实现如下: ```javascript const arr1 = [1, 2, 3, 4, 5]; const arr2 = [3, 4, 5, 6, 7]; // 查找交集 const intersection = arr1.filter(item => arr2.includes(item)); console.log(intersection); // [3, 4, 5] // 查找补集 const difference = arr1.filter(item => !arr2.includes(item)); console.log(difference); // [1, 2] ``` 以上代码中,我们首先定义了两个数组 arr1 和 arr2,然后使用 filter 方法和 includes 方法来查找它们的交集补集。其中,filter 方法用于过滤数组中的元素,includes 方法用于判断一个数组是否包含某个元素。最终,我们将交集补集分别输出到控制台。 ### 回答2: 为了查找两个数组的交集补集,我们可以使用JavaScript中的filter()和includes()方法。 首先,我们假设有两个数组array1和array2。我们可以使用filter()方法遍历array1并检查每个元素是否存在于array2中。如果元素不存在于array2中,则它属于交集补集。我们可以将这些元素存储在一个新的数组中。 下面是使用JavaScript实现的代码示例: ```javascript let array1 = [1, 2, 3, 4, 5]; let array2 = [4, 5, 6, 7, 8]; let complement = array1.filter(item => !array2.includes(item)); console.log(complement); ``` 在上述代码中,我们定义了array1和array2两个数组,然后使用filter()方法遍历array1。对于每个元素,我们使用includes()方法检查它是否存在于array2中。当元素不在array2中时,我们将其添加到complement数组中。 最后,我们打印出complement数组,这就是两个数组交集补集。 使用上述代码示例,输出结果为[1, 2, 3],这表示交集补集为1、2、3。 ### 回答3: 要找到两个数组的交集补集,我们首先需要找到两个数组的交集,然后再找到这个交集在原始数组中的补集。 要找到两个数组的交集,可以使用JS中的filter方法。首先,我们可以遍历其中一个数组,对于每一个元素,我们可以使用includes方法来判断另一个数组中是否包含这个元素,如果包含,则将其添加到结果数组中。 接下来,我们需要找到交集在原始数组中的补集。我们可以使用map方法遍历原始数组,并使用includes方法来判断交集数组中是否包含当前元素,如果不包含,那么就将其添加到补集数组中。 最后,我们可以返回补集数组作为结果。 下面是一段示例代码来解决这个问题: ```javascript function findComplement(arr1, arr2) { // 找到交集 const intersection = arr1.filter(element => arr2.includes(element)); // 找到交集补集 const complement = arr1.map(element => { if (!intersection.includes(element)) { return element; } }).filter(element => element !== undefined); return complement; } // 使用示例 const arr1 = [1, 2, 3, 4]; const arr2 = [3, 4, 5, 6]; const result = findComplement(arr1, arr2); console.log(result); // 输出 [1, 2] ``` 在这个示例中,我们先找到了两个数组的交集 [3, 4],然后找到了交集在原始数组中的补集 [1, 2]。最后将补集返回作为结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值