android中如何在ImageView组件中显示图像的一部分

解析:在IamgeView中显示图像的一部分最直接的方法就是截取图像的一部分显示。当然,使用图像剪切资源也可以实现截取图像的效果。只不过图像剪切资源只能从图像的一端开始截取,并没有直接截取图像灵活。

答案:如果想任意截取图像,可以使用Bitmap.createBitmap 方法在原图像的基础上截获某一部分图像,并创建这部分图像的bitmap对象,代码如下:

//截取(10,10,100,100)范围的图像
Bitmap smallBitmap = Bitmap.createBitmap(sourceBitmap,20,20,100,100);
//将截取后的图像显示在ImageView组件中
imageView.setImageBitmap(smallBitmap);

    本人实践代码和效果如下: 因为布局文件中只是放了两个ImageView, 并且宽高都设置为 wrap_content 

目标是,把原图片 即大图,从大图左上角像素为(800,900)处 为剪切图的左上角顶点剪切一个大小为150 * 150 大小的图片,

然后将该图片展现到imagView2上。

public class TETActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tet);
        ImageView imageView = findViewById(R.id.iv0001);
        imageView.setBackgroundResource(R.drawable.hydrangeas);
        Resources res = getResources();
        ImageView imageView1 = findViewById(R.id.iv0003);
        Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.hydrangeas);
        Bitmap bitmap = Bitmap.createBitmap(bmp,800,900,150,150);
        imageView1.setImageBitmap(bitmap);
    }
}

 效果如下:

android中如何在ImageView组件中显示图像的一部分_第1张图片

 如果只想从图像的一端(上、下、左、右)截取图像,也可以使用图像剪切资源。这种资源需要在res/drawable目录中建立一个xml文件,并使用下面的代码从图像左侧开始截取图像,然后只需要将图像剪切资源当做普通图像资源使用即可。



   只使用图像剪切资源还无法获得图像剪切效果,最后需要使用ClipDrawable.setLevel方法设置截取的百分比。系统预定义了10000位100%。下面的代码从图像左侧截取了30%

ImageView imageView1 = findViewById(R.id.iv0001);
ClipDrawable drawable = (ClipDrawable) imageView.getDrawable();
//从图像左侧截取图像的30%
drawable.setLevel(3000);

注:此处还未亲身验证,突然收到任务,暂停一下喽

你可能感兴趣的:(Android)