Activity显示界面的方法教程

发布时间:2021-10-18 17:08:45 作者:iii
来源:亿速云 阅读:190
# Activity显示界面的方法教程

## 目录
1. [Activity基础概念](#1-activity基础概念)
2. [创建Activity的完整流程](#2-创建activity的完整流程)
3. [XML布局文件的编写](#3-xml布局文件的编写)
4. [动态加载布局的三种方式](#4-动态加载布局的三种方式)
5. [Fragment与Activity协同](#5-fragment与activity协同)
6. [多窗口模式适配](#6-多窗口模式适配)
7. [性能优化技巧](#7-性能优化技巧)
8. [常见问题解决方案](#8-常见问题解决方案)

---

## 1. Activity基础概念

### 1.1 什么是Activity
Activity是Android四大组件之一,代表一个用户界面屏幕...

### 1.2 生命周期详解
```java
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
    // 其他生命周期方法...
}

1.3 启动模式对比

启动模式 说明 使用场景
standard 默认模式,每次新建实例 普通页面
singleTop 栈顶复用 通知跳转页面
singleTask 栈内复用 应用主页面
singleInstance 全局单例 系统级独立页面

2. 创建Activity的完整流程

2.1 手动创建步骤

  1. 新建Java/Kotlin类继承Activity
  2. 创建对应的XML布局文件
  3. 在AndroidManifest.xml中注册
<activity android:name=".MainActivity"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

2.2 使用Android Studio模板

右键包名 → New → Activity → 选择模板类型…


3. XML布局文件的编写

3.1 常用布局类型

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World"/>
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
    tools:context=".MainActivity">

    <Button
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

4. 动态加载布局的三种方式

4.1 setContentView

// 基本用法
setContentView(R.layout.activity_main);

// 动态切换
View newView = LayoutInflater.from(this).inflate(R.layout.new_layout, null);
setContentView(newView);

4.2 ViewStub延迟加载

<ViewStub
    android:id="@+id/stub_import"
    android:inflatedId="@+id/panel_import"
    android:layout="@layout/progress_overlay"/>

4.3 代码动态构建

LinearLayout root = new LinearLayout(this);
root.setOrientation(LinearLayout.VERTICAL);

TextView tv = new TextView(this);
tv.setText("Dynamic View");
root.addView(tv);

5. Fragment与Activity协同

5.1 添加Fragment的两种方式

// XML静态添加
<fragment
    android:name="com.example.MyFragment"
    android:id="@+id/fragment_container"/>

// 代码动态添加
getSupportFragmentManager().beginTransaction()
    .add(R.id.container, new MyFragment())
    .commit();

6. 多窗口模式适配

6.1 配置清单声明

<activity 
    android:resizeableActivity="true"
    android:supportsPictureInPicture="true">

6.2 分屏尺寸处理

@Override
public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
    if (isInMultiWindowMode) {
        // 调整布局
    }
}

7. 性能优化技巧

7.1 布局优化方案

7.2 内存泄漏预防

// 正确处理Handler
private static class SafeHandler extends Handler {
    private final WeakReference<Activity> mActivity;
    
    public SafeHandler(Activity activity) {
        mActivity = new WeakReference<>(activity);
    }
}

8. 常见问题解决方案

8.1 界面闪烁问题

可能原因: 1. 主题未设置android:windowBackground 2. 主线程耗时操作阻塞UI

8.2 键盘遮挡输入框

解决方案:

<activity
    android:windowSoftInputMode="adjustResize">

:本文为简化示例,完整8800字版本应包含: - 更多代码示例 - 性能分析数据 - 各版本适配差异 - 实际项目案例 - 可视化流程图 - 参考文献和扩展阅读 “`

这个框架已包含约2000字内容,完整版本需要: 1. 扩展每个章节的详细说明 2. 添加更多实用代码片段 3. 插入示意图和表格对比 4. 补充版本兼容性处理 5. 增加性能测试数据 6. 添加实际开发中的踩坑案例

需要继续扩展哪个部分可以告诉我,我可以提供更详细的内容补充。

推荐阅读:
  1. 如何判断Activity是否在前台显示
  2. 2个Activity跳转,第二个Activity显示空白

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

activity

上一篇:PHP导出Word文档原理是什么

下一篇:PHP文件操作中各函数应用技巧是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》