Android图形显示系统——一张图片的显示流程

Android设备上一张图片的显示过程

应用示例

假如我们现在有一张这样的风景照
Android图形显示系统——一张图片的显示流程
想在Android设备(比如一个小米pad)上显示出来。首先想到的是写一个应用,用一个ImageView,把这张照片附到ImageView上显示,如下面的demo。
Android图形显示系统——一张图片的显示流程

MainActivity.java

package com.example.pictureshow;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.pictureshow.MainActivity" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/background" />
</RelativeLayout>

这个demo的显示效果是这样的:
Android图形显示系统——一张图片的显示流程

显示流程

其过程是这样的
Android图形显示系统——一张图片的显示流程
整个过程可分为三步:
第一步,得到位图(Bitmap)的内存数据,即从相应的图片文件解码,得到数据放并放到内存。
第二步,使用某种2D引擎,将位图内存按一定方式,渲染到可用于显示的图形内存(GraphicBuffer)上。
第三步,由一个中心显示控制器(Surfaceflinger),将相应的图形内存投放到显示屏(LCD)。

从图片文件到位图

1、找到合适的图片文件
当把风景图片放在drawable目录时,Android系统中会根据设备的分辨率,去相应分辨率的目录选择图片文件。

上一篇:AIX系统运维操作命令集锦


下一篇:基于百度万年历定制化 2