今天刚好有用到这个方法,字面意思就是将Matrix 的值映射到RecF中,写了一个小demo测试
Bitmap bitmap = null;
private float dis=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView iv = (ImageView) findViewById(R.id.iv);
bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.icon_turntable_sel);
findViewById(R.id.btn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Matrix matrix = new Matrix();
dis+=100f;
matrix.setTranslate(dis, dis);
matrix.postTranslate(10, 10);
iv.setImageMatrix(matrix);
Drawable drawable=iv.getDrawable();
if(drawable!=null){
Rect rect=drawable.getBounds();
RectF rectf=new RectF();
rectf.set(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
matrix.mapRect(rectf);
Log.i("lcf", "left "+rectf.left+" "+rectf.top+" "+rectf.right +" "+rectf.bottom);
}
}
});
}
打印的值是 110.0 110.0 430.0 430.0, 将图片平移后的得到的坐标
这个地方还需要注意rectf.set(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight())这个方法,如果不写打印的值是110,110,110,110,110,也就是说没有将图片的宽高加进去。
Android Matrix.mapRect 方法讲解
最新推荐文章于 2024-09-21 18:39:40 发布