Android竖屏模式实现横屏效果

简介: android横竖屏切换是非常耗时间的,而且切换的过程也会存在明显的翻转卡顿效果,那么是否可以在竖屏模式下实现横屏的效果呢?答案是肯定的,这里提供一种方法,其思路是对view进行90度的旋转,而且实现起来非常简单,其效果图如下: 首先我们先在layout里排版出一个水平的布局,如下图: 是不是很简单?布局代码如下: <?xml version="1.0" enco

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);  // 将布局位移到屏幕中心
    }

}








目录
相关文章
|
4月前
|
Android开发
Android Mediatek 增加Recovery模式下读cmdline的强制工厂重置选项
Android Mediatek 增加Recovery模式下读cmdline的强制工厂重置选项
46 0
|
4月前
|
XML 前端开发 测试技术
Android基础知识:解释Android的MVC和MVP模式。
Android基础知识:解释Android的MVC和MVP模式。
54 0
|
4月前
|
XML Java Android开发
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
138 0
|
18天前
|
设计模式 Android开发 Kotlin
Android经典实战之Kotlin委托模式和by关键字
本文介绍了Kotlin中`by`关键字在类及属性委托中的运用,通过实例展示了如何利用类委托简化接口实现,以及如何借助标准与自定义属性委托管理属性的读写操作。通过`by`关键字的支持,Kotlin使得委托模式的实现更为直观且高效。
38 4
|
2月前
|
存储 前端开发 测试技术
Android Kotlin中使用 LiveData、ViewModel快速实现MVVM模式
使用Kotlin实现MVVM模式是Android开发的现代实践。该模式分离UI和业务逻辑,借助LiveData、ViewModel和DataBinding增强代码可维护性。步骤包括创建Model层处理数据,ViewModel层作为数据桥梁,以及View层展示UI。添加相关依赖后,Model类存储数据,ViewModel类通过LiveData管理变化,而View层使用DataBinding实时更新UI。这种架构提升代码可测试性和模块化。
130 2
|
3月前
|
传感器 Android开发 UED
Android统一设置页面竖屏
【6月更文挑战第4天】
|
3月前
|
XML Java Android开发
Android代码设计活动竖屏
【6月更文挑战第17天】
|
4月前
|
传感器 小程序 Java
Java+saas模式 智慧校园系统源码Java Android +MySQL+ IDEA 多校运营数字化校园云平台源码
Java+saas模式 智慧校园系统源码Java Android +MySQL+ IDEA 多校运营数字化校园云平台源码 智慧校园即智慧化的校园,也指按智慧化标准进行的校园建设,按标准《智慧校园总体框架》中对智慧校园的标准定义是:物理空间和信息空间的有机衔接,使任何人、任何时间、任何地点都能便捷的获取资源和服务。
53 1
|
4月前
|
设计模式 前端开发 数据库
构建高效Android应用:使用Jetpack架构组件实现MVVM模式
【4月更文挑战第21天】 在移动开发领域,构建一个既健壮又易于维护的Android应用是每个开发者的目标。随着项目复杂度的增加,传统的MVP或MVC架构往往难以应对快速变化的市场需求和复杂的业务逻辑。本文将探讨如何利用Android Jetpack中的架构组件来实施MVVM(Model-View-ViewModel)设计模式,旨在提供一个更加模块化、可测试且易于管理的代码结构。通过具体案例分析,我们将展示如何使用LiveData, ViewModel, 和Repository来实现界面与业务逻辑的分离,以及如何利用Room数据库进行持久化存储。最终,你将获得一个响应迅速、可扩展且符合现代软件工
60 0
|
4月前
|
XML 数据库 数据安全/隐私保护
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
63 0