getDrawable().getIntrinsicWidth()
时间: 2023-06-25 20:01:08 浏览: 52
这个方法是用来获取Drawable对象的固有宽度,即它在没有进行缩放时的宽度。具体来说,getDrawable()方法返回的是一个Drawable对象,然后调用它的getIntrinsicWidth()方法就可以获取它的固有宽度了。如果Drawable对象没有指定固有宽度,那么getIntrinsicWidth()方法会返回-1。需要注意的是,这个方法只有在Drawable对象被设置为固定宽度时才有意义,否则它返回的值可能会是错误的。
相关问题
layout能使用getDrawable().getIntrinsicWidth()
在layout中,getDrawable().getIntrinsicWidth()并不能直接使用。因为这个方法是定义在Drawable类中的,而在layout中,我们通常使用的是View类及其子类,它们并没有直接提供这个方法。如果你想要获取一个View中的Drawable对象的固有宽度,你可以通过以下方式之一实现:
1. 通过findViewById()方法获取到View对象,然后通过View对象的getBackground()、getCompoundDrawables()等方法获取到对应的Drawable对象,最后使用getDrawable().getIntrinsicWidth()方法获取其固有宽度。
2. 直接在Java代码中创建一个Drawable对象,然后使用getDrawable().getIntrinsicWidth()方法获取其固有宽度,例如:
```
Drawable drawable = getResources().getDrawable(R.drawable.my_drawable);
int intrinsicWidth = drawable.getIntrinsicWidth();
```
这里的R.drawable.my_drawable是一个Drawable类型的资源,你可以替换成你自己的资源。
drawable 半圆
要绘制一个半圆形的drawable,你可以使用XML定义一个shape,然后使用旋转变换将其旋转90度,从而得到一个半圆形。
下面是一个示例代码:
```xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FF0000" />
<corners android:radius="10dp" />
<size android:width="20dp" android:height="40dp" />
</shape>
```
你需要在代码中将这个drawable进行旋转,如下所示:
```java
// 获取drawable资源
Drawable drawable = getResources().getDrawable(R.drawable.half_circle);
// 进行旋转变换
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
Matrix matrix = new Matrix();
matrix.postRotate(90);
drawable = new BitmapDrawable(getResources(), Bitmap.createBitmap(((BitmapDrawable) drawable).getBitmap(), 0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), matrix, true));
```
这样就可以得到一个半圆形的drawable了。