• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android中Activity运行时屏幕方向与显示方式详解,androidactivity

Android中Activity运行时屏幕方向与显示方式详解,androidactivity

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android activity详解,android baseactivity,android.app.activity,android 关闭activity,android 刷新activity等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android中Activity运行时屏幕方向与显示方式详解,androidactivity


现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向)。但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运行时的屏幕方向。还有就是在我们用手机观看视频时,随意的进行横竖屏切换,但播放进度不会随着屏幕的转换而从头开始播放,为了实现这个功能,我们就需要在Activity转换时对当前数据进行保存。

现在根据以上两种需求,个人提出以下解决方案:

一、锁定Activity运行时屏幕方向,如下图(演示锁定横屏):

我们可以通过以下两种方式实现锁定Activity运行时屏幕的方向:

(1)通过修改AndroidMainfest.xml配置文件

修改Android/app/mainfests/AndroidMainfest.xml下的配置文件如下:

<activity>节点的android:screenOrientation属性可以完成该任务(portrait为保持竖屏,landscape为保持横屏)

 

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 2     package="com.example.administrator.day18">
 3     <application
 4         android:allowBackup="true"
 5         android:icon="@mipmap/ic_launcher"
 6         android:label="@string/app_name"
 7         android:supportsRtl="true"
 8         android:theme="@style/AppTheme">
 9         <activity android:name=".Main2Activity"
10         //添加screenOrientation属性(portrait为保持竖屏,landscape为保持横屏)
11             android:screenOrientation="landscape">
12             <intent-filter>
13                 <action android:name="android.intent.action.MAIN" />
14 
15                 <category android:name="android.intent.category.LAUNCHER" />
16             </intent-filter>
17         </activity>
18     </application>
19 </manifest>

 

(2)通过java代码实现:

 1 import android.content.pm.ActivityInfo;
 2 import android.os.Bundle;
 3 import android.support.annotation.Nullable;
 4 import android.support.v7.app.AppCompatActivity;
 5 /**
 6  * Created by panchengjia on 2016/12/9.
 7  */
 8 public class Test extends AppCompatActivity {
 9     @Override
10     protected void onCreate(@Nullable Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main2);
13         //添加setRequestedOrientation方法实现锁定横屏(portrait为保持竖屏,landscape为保持横屏)
14         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
15     }
16 }

现在第一种需求通过修改配置文件以及java代码的方式实现,但这里要注意的是当同时在配置文件以及java文件中设置了方向锁定时,系统会以配置文件设置为准(可以理解为配置文件优先级高于java代码)

 

二、Activity转换方向时数据的保存

 

下面我们展示Activity转换方向时未保存数据的情况:

演示中,我们通过记录按钮的点击次数(土司)来判断数据是否被保存

我们发现当屏幕(Acticity)由横屏转为竖屏时,数据未实现保存,继续从0开始计数点击次数。

当我们设置保存数据后,演示情况如下:

保存数据后,点击数土司会继续竖屏状态的数据更新,而不是从零重新开始。

针对数据保存我们同样有两种方法实现,分别为在java代码中使用onSaveInstanceState()方法以及在属性。

下面我们详细分析这两种方法的实现:

 

(1)onSaveInstanceState详解

 

实现代码如下(这里写了Activity的全部生命周期,并打印log用于分析性能):

 1 import android.support.v7.app.AppCompatActivity;
 2 import android.os.Bundle;
 3 import android.util.Log;
 4 import android.view.View;
 5 import android.widget.Toast;
 6 /**
 7  * Created by panchengjia on 2016/12/9.
 8  */
 9 public class Main2Activity extends AppCompatActivity {
10     int num=1;//初始点击次数为1
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main2);
15         if(savedInstanceState!=null){
16             num=savedInstanceState.getInt("data");
17         }
18         Log.i("Tag","onCreate");
19     }
20     //设置点击事件土司记录数据
21     public void show(View v){
22         Toast.makeText(this, num++ +"", Toast.LENGTH_SHORT).show();
23     }
24     @Override
25     protected void onSaveInstanceState(Bundle outState) {
26         super.onSaveInstanceState(outState);
27         outState.putInt("data",num);
28         Log.i("Tag","onSaveInstanceState");
29     }
30     @Override
31     protected void onStart() {
32         super.onStart();
33         Log.i("Tag","onStart");
34     }
35     @Override
36     protected void onResume() {
37         super.onResume();
38         Log.i("Tag","onResume");
39     }
40     @Override
41     protected void onRestart() {
42         super.onRestart();
43         Log.i("Tag","onRestart");
44     }
45     @Override
46     protected void onPause() {
47         super.onPause();
48         Log.i("Tag","onPause");
49     }




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android中Activity运行时屏幕方向与显示方式详解,androidactivity

相关文章

  • 2017-05-26Android系统的五种数据存储形式(一),android数据存储
  • 2017-05-26tcpdump的移植和使用方法
  • 2017-05-26Android中Fragment与Activity之间的交互(两种实现方式),androidfragment
  • 2017-05-26Android属性系统简介,android属性简介
  • 2017-05-26git版本控制工具(二)----本地版本库的常用操作,git----
  • 2017-05-26Android动态加载Activity原理
  • 2017-05-26Android 缓存类LruCache源码分析
  • 2017-05-26订单流程view,订单view
  • 2017-05-26Android 手机卫士--绑定sim卡序列号,androidsim
  • 2018-01-28Android Studio 错误解决办法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 存储链路问题导致的RAC异常
    • Android 自定义分层级筛选控件
    • 转载:android MVC设计模式,androidmvc
    • android开发中fragment获取context,androidfragment
    • 【React Native开发】React Native控件之ToolbarAndroid工具栏控件讲解以及使用(15)
    • android 实现漫天飞舞雪花以及下雨天的效果
    • 关于Pacemaker集群配置的版本
    • 开源图表库MPAndroidChart使用介绍之饼状图&amp;折线图&amp;柱状图,图表mpandroidchart
    • 7.5.2 WebView和JavaScrip交互基础
    • Linux主机网络流量监控ifstat

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有