在我的应用程序中,有方形可定制的触觉区域。
用户可以按父母大小的百分比自定义位置(左上角,中间底部......)和大小。
xml视图:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="fr.tactiledialog.TestBoxActivity">
<fr.tactiledialog.layout.SquareLayout
android:id="@+id/test_tactile_area"
android:layout_width="match_parent"
android:layout_height="match_parent" />
自定义广场布局&#39; onMeasue:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
size = (width > height ? height : width) * getPercentageSizeFromPreferences() / 100;
Log.e("DIALOG", width + " ~ " + height + " = " + size);
setMeasuredDimension(size, size); // to make it square
}
问题是这个方法被多次调用(准确地说是四次):
E/DIALOG: 984 ~ 1677 = 541
E/DIALOG: 541 ~ 1581 = 297
E/DIALOG: 984 ~ 1677 = 541
E/DIALOG: 541 ~ 1581 = 297
我没有经验丰富的Android开发人员,所以我无法弄清楚逻辑和解决方案。请帮忙。
感谢。