[英]Asynctask onpostexecute is not updating views if the screen is rotated while doinbackground is excuted
[英]Display rotated views that exceed screen bounds correctly without resizing
現在,我正在嘗試在自定義視圖之上添加視圖(可能會超出屏幕范圍)來解決問題。 該自定義視圖以不同的角度繪制了不同的矩形。 為了以后使用,應該可以選擇矩形以用於以后的拖放操作,在這些情況下,我不想不斷重繪整個自定義視圖。
因此,在每個繪制的矩形上方放置一個具有相同尺寸和旋轉度的按鈕。
但是由於某種原因,android似乎在到達屏幕末端時會自動調整視圖大小:
我的期望(即使只有一半可見,按鈕也會覆蓋所有內容):
實際行為(按鈕縮小):
當我要添加的視圖未旋轉時,這本身並不是一個大問題。
但是,如果旋轉視圖,則圍繞該中心點的旋轉會導致各種問題,因為該視圖現在更小且位於其他位置:
我的期望(按鈕完全圍繞對象的中心點旋轉):
我得到的是按鈕變小,因此其中心點移動:
我閱讀了其他問題,認為View.setClipChildren(false)和View.setClipPadding(false)應該有所幫助。 但是它所做的基本上只是弄亂了我的視圖層次結構,因為我有點想進行剪切,而不是自動調整大小。 最重要的是,它不能解決我遇到的問題。
你們有任何想法我該如何解決?
我試圖在IOS和JavaFX上做同樣的事情,它們都按預期工作。
由於我正在嘗試以編程方式解決整個問題,因此我創建了一些測試代碼,將按鈕的中心點放在屏幕邊緣並將其旋轉45度:因此,您應該只能看到按鈕的一半。 但是該按鈕顯得較小,並且在屏幕右側完全可見。 當然,由於中心點不同,它也不在我期望的位置上。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Context context = getApplicationContext();
RelativeLayout relativeLayout = new RelativeLayout(context);
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
Button button = new Button(context);
button.setText("DO STUFF");
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(800, 80);
params.leftMargin = width - 400;
params.topMargin = height / 2;
button.setLayoutParams(params);
button.setRotation(45);
button.setBackgroundColor(Color.RED);
relativeLayout.addView(button);
setContentView(relativeLayout);
}
}
我是偶然發現解決方案的。
這似乎是RelativeLayout的一種特殊行為。 我沒有找到任何能解釋它的內容,但是我將其替換為具有兩個積極影響的FrameLayout。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.