我有一个名为 FractalView 的类,它扩展了 ImageView。我的目标是使用具有整个屏幕大小的此类绘制分形。它是我的活动布局文件中的唯一视图,除了顶级 LinearLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFFFF">
<com.antonc.fractal_wallpaper.FractalView
android:id="@+id/fractal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
</LinearLayout>
如您所见,我对 FractalView 和 LinearLayout 的 layout_width 和 layout_height 都使用了“match_parent”。在这一点上,我假设 FractalView 的大小设置为某个值,因为它匹配它的父级,它匹配它的父级(即整个屏幕)。然后我尝试使用 getWidth() 和 getHeight() 检测 FractalView 可用的大小:
public class FractalView extends ImageView {
private Context mContext;
private Handler mHandler;
private int mScrWidth;
private int mScrHeight;
public FractalView(Context context) {
super(context);
mContext = context;
init();
}
private void init() {
mScrWidth = getWidth();
mScrHeight = getHeight();
// Breakpoint
}
@Override
protected void onDraw(Canvas canvas) {
[...]
}
}
但是当我的代码到达断点时,调试器显示 mScrWidth 和 mScrHeight 为零。我尝试使用 getMeasuredWidth() 和 getMaxWidth(),但它们也返回不正确的值。我已经阅读了类似问题的几个答案,即这个,他们都解释说 getWidth()在绘制后返回图像的大小,而我真正需要的是该视图可用的区域的宽度,在我开始画画之前。
有没有办法检索这些宽度和高度值?