Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidアプリでSurfaceView(サーフェスビュー)を透明にする方法を解説

本記事では、AndroidアプリでSurfaceView(サーフェスビュー)を透明にする方法を、サンプルコードとともにステップごとにわかりやすく解説します。カメラプレビューなどでSurfaceViewを使用する際に背景を透過させたいケースは多いため、ぜひ参考にしてください。

手順1:Android Studioで新規プロジェクトを作成

Android Studioを起動し、メニューから「File」→「New Project」を選択して新しいプロジェクトを作成します。必要事項をすべて入力し、プロジェクトのセットアップを完了させてください。

手順2:activity_main.xmlにコードを追加

res/layout/activity_main.xml に以下のコードを追加します。SurfaceViewの上に、背景を透過させたImageView(マスク画像)を重ねて配置する構成です。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <SurfaceView
        android:id="@+id/cameraSurface"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <ImageView
        android:id="@+id/IV_MASK"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/mask"
        android:background="@android:color/transparent"/>
</RelativeLayout>

手順3:MainActivity.javaにコードを追加

src/MainActivity.java に以下のコードを記述します。onCreate() メソッド内で、手順2で作成したレイアウトを読み込むシンプルな実装です。

package com.app.sample;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

手順4:AndroidManifest.xmlにコードを追加

Manifests/AndroidManifest.xml に以下のコードを設定します。MainActivity をランチャーアクティビティとして登録しています。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.app.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

補足:SurfaceViewを透過させるためのポイント

SurfaceViewそのものの背景を透過して描画したい場合は、ホルダーのピクセルフォーマットを半透明に設定し、Z軸の表示順序を調整するのが効果的です。MainActivityに以下のようなコードを追加してみましょう。

SurfaceView surfaceView = findViewById(R.id.cameraSurface);
surfaceView.setZOrderOnTop(true);
surfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);

また、レイアウト側では ImageView の background に @android:color/transparent を指定することで、重ね合わせたビューの背景を透過できます。

アプリを実行して動作を確認しよう

それでは、実際にアプリを実行してみましょう。ここでは、実機のAndroidスマートフォンがパソコンに接続されているものとして説明します。Android Studioからアプリを起動するには、プロジェクト内のいずれかのアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイス選択画面で自分のモバイル端末を選択すると、端末側にアプリのデフォルト画面が表示されます。

AndroidアプリでSurfaceView(サーフェスビュー)を透明にする方法を解説

  1. FacebookでAndroidアプリを作成する方法|開発者サイトでの設定手順を徹底解説

    この記事では、FacebookでAndroidアプリを作成する方法について詳しく解説します。AndroidアプリとFacebookを連携させるには、Facebook開発者サイトでFacebookアプリを作成し、Facebook App IDを取得する必要があります。以下の手順に従って、順番に進めていきましょう。 準備:Facebook開発者サイトで新しいアプリを追加する まず、https://developers.facebook.com/ にアクセスし、「新しいアプリを追加」をクリックしてアプリの作成を開始します。 ステップ1:アプリ名とメールアドレスを入力する 指定されたフィールドに、作

  2. Windows 10でウィンドウを半透明にする方法!おすすめツール4選

    Windows Aeroは長年にわたりデスクトップウィンドウに美しい視覚効果を加えてきましたが、公式にウィンドウを透明化する方法は現在も用意されていません。しかし幸いなことに、サードパーティ製ツールを使えばこの目的を簡単に達成できます。 今回は、ウィンドウを透明化できる便利なツールと、それぞれの特徴・強みについて詳しくご紹介します。 1. Glass2k 正直にお伝えすると、Glass2kはかなり昔のソフトウェアです。配布ページを開くと、動作しなくなったFlashパネルや、「開発はとっくに終了している」と告げる大きな赤いバナーが目に飛び込んできます。 システム要件を見ると、400MHzのCP