Android豎屏模式實現橫屏效果
阿新 • • 發佈:2019-01-05
android橫豎屏切換是非常耗時間的,而且切換的過程也會存在明顯的翻轉卡頓效果,那麼是否可以在豎屏模式下實現橫屏的效果呢?答案是肯定的,這裡提供一種方法,其思路是對view進行90度的旋轉,而且實現起來非常簡單,其效果圖如下:
首先我們先在layout裡排版出一個水平的佈局,如下圖:
是不是很簡單?佈局程式碼如下:
以上程式碼中id為layout_horizontal的LinearLayout是我們將要進行旋轉的佈局。需要注意的是,待旋轉的佈局的父佈局必須是LinearLayout,比如這裡id為layout_horizontal的LinearLayout的外面還必須套一個LinearLayout。<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/layout_horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello my android , i'm obo" /> <View android:layout_width="match_parent" android:layout_height="20dp" android:background="#FF0000" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button" /> </LinearLayout> </LinearLayout>
activity中的程式碼非常簡單,思路是先獲取到螢幕的尺寸,然後將id為layout_horizontal的LinearLayout的尺寸進行主動的設定,其寬為螢幕的高,其高為螢幕的寬,之後再旋轉90度,旋轉完之後進行位移,這裡的位移是為了將旋轉後的佈局放置在螢幕中心。
public class HorizontalActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_horizontal); DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); // 獲取螢幕的尺寸 int width = displayMetrics.widthPixels; // 螢幕寬 int height = displayMetrics.heightPixels; // 螢幕高 LinearLayout layout = (LinearLayout) findViewById(R.id.layout_horizontal); // 待旋轉佈局 layout.setLayoutParams(new LinearLayout.LayoutParams(height, width)); // 設定佈局的寬和高,必須要和螢幕的反過來 layout.setRotation(90); // 順時針旋轉90度 layout.setY((height - width) / 2); layout.setX((width - height) / 2); // 將佈局位移到螢幕中心 } }