Android App获取屏幕旋转角度的方法

本文实例为大家分享了Android App获取屏幕旋转角度的具体代码,供大家参考,具体内容如下

一、获取屏幕旋转角度的方法是int rotation = mActivity.getWindowManager().getDefaultDisplay().getRotation();

二、测试代码

1、getRotation\app\src\main\java\com\example\getrotation\MainActivity.java

package com.example.getrotation;
 
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Surface;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
 
import org.w3c.dom.Text;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    final String TAG="rotation";
    TextView  mshow_rotation;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.btn_update).setOnClickListener(this);
        mshow_rotation=(TextView) findViewById(R.id.show_rotation);
    }
 @Override
    public void onClick(View view) {
        if (view.getId() == R.id.btn_update) {
            int angle = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
 
            switch (angle) {
                case Surface.ROTATION_0:
                    Log.d(TAG, "Rotation_0");
                    mshow_rotation.setText(Integer.toString(0)+"℃");
                    break;
                case Surface.ROTATION_90:
                    Log.d(TAG, "ROTATION_90");
                    mshow_rotation.setText(Integer.toString(90)+"℃");
                    break;
                case Surface.ROTATION_180:
                    Log.d(TAG, "ROTATION_180");
                    mshow_rotation.setText(Integer.toString(180)+"℃");
                    break;
                case Surface.ROTATION_270:
                    Log.d(TAG, "ROTATION_270");
                    mshow_rotation.setText(Integer.toString(270)+"℃");
                    break;
                default:
                    Log.d(TAG, "Default Rotation!");
                    break;
 
            }
        }
    }
}

2、布局文件activity_main.xml

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <TextView
        android:id="@+id/show_rotation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <Button
        android:id="@+id/btn_update"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Get Rotation value"
        tools:layout_editor_absoluteX="145dp"
        tools:layout_editor_absoluteY="119dp" />
 
</android.support.constraint.ConstraintLayout>

三、执行效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android屏幕旋转 处理Activity与AsyncTask的最佳解决方案

    一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务,以便恢复activity的状态. 为此,google提供了三种解决方案: 对于少量数据: 通过onSaveInstanceState(),保存有关应用状态的数据. 然后在 onCreate() 或 onRestoreInstanceState()期间恢复 Activity 状态. 对于大量数据:用

  • 详解Android中Runtime解决屏幕旋转问题(推荐)

    前言 大家或许在iOS程序开发中经常遇到屏幕旋转问题,比如说希望指定的页面进行不同的屏幕旋转,但由于系统提供的方法是导航控制器的全局方法,无法随意的达到这种需求.一般的解决方案是继承UINavrgationViewController,重写该类的相关方法,这样虽然也能解决问题,但是在重写的过程中至少产生两个多余的文件和不少的代码,这显然不是我们想要的.下面就使用一种较底层的方法解决这个问题. 基本原理 动态的改变UINavrgationViewController的全局方法,将我们自己重写的su

  • Android屏幕旋转之横屏竖屏切换的实现

    刚实现了App内手机横/竖放置时,屏幕横/竖屏的切换.记录一下中间需要的关键信息和实现过程. 开门见山的说,实现屏幕自动/手动旋转的方式有两种: 一种是在工程的代码中定义,这种方式在横竖屏切换时执行的操作是:销毁当前Activity–根据新的屏幕尺寸重建Activity.如果不进行数据存储的操作,在切换的过程中Activity中的数据会丢失. 另一种是在工程的AndroidManifest.xml中定义,这种定义的方式在某些情况下可以实现"不销毁需要横竖屏的Activity",因为这种

  • Android webview旋转屏幕导致页面重新加载问题解决办法

    Android webview旋转屏幕导致页面重新加载问题解决办法 1. 在create时候加个状态判断 protected void onCreate(Bundle savedInstanceState){ ... if (savedInstanceState == null) { mWebView.loadUrl("your_url"); } ... } 2. 重载保存状态的函数: @Override protected void onSaveInstanceState(Bundl

  • Android开发 旋转屏幕导致Activity重建解决方法

    Android开发文档上专门有一小节解释这个问题.简单来说,Activity是负责与用户交互的最主要机制,任何"设置"(Configuration)的改变都可能对Activity的界面造成影响,这时系统会销毁并重建Activity以便反映新的Configuration. "屏幕方向"(orientation)是一个Configuration,通过查看Configuration类的javadoc可以看到其他Configuration还有哪些:如fontScale.ke

  • Android实现屏幕旋转四个方向准确监听

    在做相机开发时,遇到一个问题,就是需要监听屏幕旋转.最简单的就是使用onConfigurationChanged()和OrientationEventListener这两种方法来实现,但是最后都遇到了问题. #1 一开始是使用onConfigurationChanged()这个回调,重新Activity里面的这个方法就可以了,简单又方便.用了之后发现,它只能监听,横屏切竖屏的情况.左横屏切右横屏是监听不到的,而且切完之后你也不知道是左横屏还是右横屏.下面是使用onConfigurationCha

  • Android6.0开发中屏幕旋转原理与流程分析

    本文实例讲述了Android6.0开发中屏幕旋转原理与流程.分享给大家供大家参考,具体如下: 从Android 系统开发开始,这里写下Android 6.0 屏幕旋转系统分析. 第一部分 Kenel Android 系统屏幕旋转得以实现,是靠从底层驱动gsensor 中获取数据,从而判断屏幕方向的.kernel sensor的驱动先就不在这里赘述,简单介绍下,gsensor 驱动注册input 事件 在/dev/input/下,可以通过adb getevent -p 可以查看系统所有的输入事件.

  • Android如何监听屏幕旋转

    背景 关于个人,前段时间由于业务太忙,所以一直没有来得及思考并且沉淀点东西:同时组内一个个都在业务上能有自己的思考和总结,在这样的氛围下,不由自主的驱使周末开始写点东西,希望自己除了日常忙于业务,可以沉淀点东西,加上自己的成长.. 关于切入点,最近在做应⽤内悬浮球功能时,需要监听屏幕旋转事件来对悬浮球的位置进⾏调整,发现有些情况下并不能收到系统回调,思考了⼀翻,做了⼀个屏幕旋转的模拟监听,基本上能达到⽬的. 问题 悬浮球在停⽌拖拽后,需要贴边到⼿机屏幕的左右两侧. 在竖屏状态下,x坐标为0即为左

  • Android实现简单旋转动画

    本文实例为大家分享了Android实现简单旋转动画的具体代码,供大家参考,具体内容如下 核心方法 public void startAnimation(Animation animation) 执行动画,参数可以是各种动画的对象,Animation的多态,也可以是组合动画,后面会有. 2个参数的构造方法 /**  * Constructor to use when building a RotateAnimation from code.  * Default pivotX/pivotY poi

  • Android实现屏幕旋转方法总结

    本文实例总结了Android实现屏幕旋转方法.分享给大家供大家参考.具体如下: 在介绍之前,我们需要先了解默认情况下android屏幕旋转的机制: 默认情况下,当用户手机的重力感应器打开后,旋转屏幕方向,会导致当前activity发生onDestroy-> onCreate,这样会重新构造当前activity和界面布局,如果在Camera界面,则表现为卡顿或者黑屏一段时间.如果是在横竖屏UI设计方面,那么想很好地支持屏幕旋转,则建议在res中建立layout-land和layout-port两个

随机推荐