android横竖屏切换是非常耗时间的,而且切换的过程也会存在明显的翻转卡顿效果,那么是否可以在竖屏模式下实现横屏的效果呢?答案是肯定的,这里提供一种方法,其思路是对view进行90度的旋转,而且实现起来非常简单,其效果图如下:



首先我们先在layout里排版出一个水平的布局,如下图:


是不是很简单?布局代码如下:

<?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>
以上代码中id为layout_horizontal的LinearLayout是我们将要进行旋转的布局。需要注意的是,待旋转的布局的父布局必须是LinearLayout,比如这里id为layout_horizontal的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);  // 将布局位移到屏幕中心    }}








更多相关文章

  1. Android中px、dip、sp的区别
  2. android:创建自定义控件
  3. Android软键盘(二) 软键盘弹出布局上移的问题
  4. Android(安卓)高仿【优酷】圆盘旋转菜单 的实现
  5. Android屏幕切换左右滑动
  6. Android(安卓)增强版百分比布局库 Eclipse Demo
  7. Android——layout_marginStart和layout_marginEnd的详细讲解
  8. android适配
  9. Android(安卓)listview的适配器以及各种监听、效率的提升

随机推荐

  1. Android应用程序进程启动过程的源代码分
  2. Android(安卓)系统下模拟触点击的功能与
  3. Android(安卓)App 性能优化之图片优化
  4. Android开发手记一 NDK编程实例
  5. 关于Google Android技术教程
  6. View控件中android:drawablePadding不起
  7. 「Android问卷调查类型页面及逻辑实现」R
  8. Android(安卓)自定义控件
  9. Android(安卓)-- Android(安卓)Init进程
  10. Blog-07-《一周快速上手Kotlin For Andro