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);
    }
}

 效果如下:

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

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/hydrangeas"
    android:clipOrientation="horizontal"
    android:gravity="left"/>
</clip>

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值