現在我正在嘗試使用Android Studio編程一個小應用程序來解決問題。在創建片段時通過畫布在畫布上繪製一條線
我有一個主要活動,用於在我的代碼中的不同片段之間切換。現在我需要加載一個新的片段,如果我的設備的方向正在切換(例如從縱向到橫向)。我正在用這種方法做到這一點
public void onConfigurationChanged(Configuration newConfig)
和一切似乎都很好在這一點。
在我的第一個片段中,我有一個imageview,它將用一條畫布線「透支」。由於新的定位片段需要具有相同大小的相同大小的imageview(包含在XML_layout文件中),我保存了座標,在切換到新的片段之前將它們從舊的片段類中取出,並嘗試繪製新的imageview再次與該行。畫布線方法只是通過傳遞角度來計算座標(第一個屬性)。 另外,我在editText字段中顯示座標的值。
現在我的問題是,旋轉設備後,我會看到座標我EDITTEXT場,但我不能得出我的ImageView在新的片段,因爲我正在觸發該事件與TextWatcher/afterTextChanged
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
drawLineOne(50, Color.Green, MyImVi);
}
});
和Textwatcher在於
public void onViewCreated(View view, Bundle savedInstanceState)
我的新片段的
。
Textwatcher的想法是每當新角度包含到editText後重新繪製線條。
現在我試圖畫出這條線,如果方向已經改變,並且有新角度的可處理數據(整個想法是在圖像瀏覽,橫向模式和肖像模式中都有一條比較線) )。
但是,如果我試圖在像onViewCreated另一個地方,我在錯誤前往觸發我drawLineOne方法:
java.lang.IllegalArgumentException: width and height must be > 0
出現這種情況,同時爲我的Canvas對象的位圖文件:
Bitmap bmp = Bitmap.createBitmap(MyImVi.getWidth(), MyImVi.getHeight(), Bitmap.Config.ARGB_8888);
有沒有什麼方法可以調用或創建一個函數,在方向改變後新的片段在我的活動中可見?我想這就是爲什麼它發生時,香港專業教育學院已經嘗試打電話給我drawLineOne中的主要問題:在頭部
- 在onStart()
- 的onResume()
- onActivityCreated()
onViewCreated() 也是這樣的
@覆蓋 公共無效setUserVisibleHint(布爾isVisibleToUser)(分配Textwatcher前){ 超。setUserVisibleHint(isVisibleToUser);如果(isVisibleToUser){ if(interimValueAzimut!= null){ drawLineOne(50,Color.GREEN,imageViewAzimut_ls); }} }
或者是有一個更容易畫出旋轉後該行的方式?也許與我的TextWatcher的另一種方法?
我剛剛開始使用Java,並獲得與它更好,但總是在類似這樣的問題被卡住所以請溫柔:)
親切的問候