0
我正在研究一個從RelativeLayout擴展的子類,它有一個OnScaleGestureListener
。我希望當你在視圖上縮放時,這個改變的高度(就像縮放,但調整對象的大小)。但是,我不知道該如何解釋它,這讓我覺得很奇怪。setlayoutParams()拋出異常
我的代碼是:
public class simpleOnScaleGestureListener extends SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
tmpScale = detector.getCurrentSpan()/detector.getPreviousSpan();
Log.d("DEBUG", ".getCurrentSpan() is "+detector.getCurrentSpan());
Log.d("DEBUG", ".getPreviousSpan() is "+detector.getPreviousSpan());
Log.d("DEBUG", ".getScaleFactor() is "+detector.getScaleFactor());
scaling = true;
RelativeLayout.LayoutParams params = new LayoutParams(kTicketWidth, (int) (getMeasuredHeight()*mScaleFactor));
setLayoutParams(params);
//invalidate();
requestLayout();
return true;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
mScaleFactor = detector.getCurrentSpan()/detector.getPreviousSpan();
adjustTickets();
//Expand Animation
/*if (mScaleFactor >= kMinScale){
ScaleAnimation anim = new ScaleAnimation(1, 1, mScaleFactor, 1);
startAnimation(anim);
tmpScale=1;
adjustTickets();
} else if (mScaleFactor < kMinScale){
ScaleAnimation anim = new ScaleAnimation(1, 1, mScaleFactor, 1);
startAnimation(anim);
tmpScale = kMinScale;
adjustTickets();
}
scaling = false;*/
Log.d("SCALE", "Scale have ended");
}
}
而且,它需要我的例外是:
05-19 13:10:28.943: E/AndroidRuntime(15701): FATAL EXCEPTION: main
05-19 13:10:28.943: E/AndroidRuntime(15701): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
05-19 13:10:28.943: E/AndroidRuntime(15701): at android.widget.LinearLayout.measureVertical(LinearLayout.java:655)
05-19 13:10:28.943: E/AndroidRuntime(15701): at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
05-19 13:10:28.943: E/AndroidRuntime(15701): at android.view.View.measure(View.java:15190)
而且,我不知道爲什麼會發生的另一件事是,mScaleFactor變爲1.0不斷地,當它變成0.81464或1.28774時,它又變回1.0。有誰知道爲什麼發生這種情況?
在我的XML文件,我只加了我的自定義視圖,它是有看法我發佈的代碼。在該課堂內部,我添加了三個LinearLayouts,但是我正在調教的高度是這個自定義視圖的高度。 –