কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েড অ্যাপে SurfaceView ট্রান্সপারেন্ট করবেন কীভাবে?

SurfaceView-এর ব্যাকগ্রাউন্ড ট্রান্সপারেন্ট করা

এই উদাহরণটি দেখায় কীভাবে SurfaceView-এর পেছনে অন্য ভিউ (যেমন ImageView) দেখাতে ব্যাকগ্রাউন্ড ট্রান্সপারেন্ট রাখা যায়।

ধাপ ১: প্রজেক্ট তৈরি করুন

Android Studio-তে নতুন প্রজেক্ট।

ধাপ ২: লেআউট (activity_main.xml) - RelativeLayout ব্যবহার করুন

<?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 নিচে থাকবে -->
    <SurfaceView
        android:id="@+id/cameraSurface"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    
    <!-- ImageView উপরে থাকবে (মাস্ক/ওভারলে) -->
    <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>

ধাপ ৩: MainActivity.java

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);
        
        // SurfaceView ট্রান্সপারেন্ট করতে SurfaceHolder.Callback ব্যবহার করুন
        SurfaceView surfaceView = findViewById(R.id.cameraSurface);
        surfaceView.getHolder().setFormat(PixelFormat.TRANSPARENT);
        surfaceView.setZOrderOnTop(false); // নিচে রাখুন
    }
}

গুরুত্বপূর্ণ: SurfaceView ট্রান্সপারেন্ট করার মূল কী

SurfaceView surfaceView = findViewById(R.id.cameraSurface);
SurfaceHolder holder = surfaceView.getHolder();

// ১. পিক্সেল ফরম্যাট ট্রান্সপারেন্ট সেট করুন
holder.setFormat(PixelFormat.TRANSPARENT);

// ২. Z-অর্ডার নিয়ন্ত্রণ করুন
surfaceView.setZOrderOnTop(false); // false = নিচে, true = উপরে

// ৩. ক্যানভাস ড্র করার সময় ট্রান্সপারেন্ট ব্যাকগ্রাউন্ড
Canvas canvas = holder.lockCanvas();
if (canvas != null) {
    canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
    // আপনার ড্রইং কোড এখানে
    holder.unlockCanvasAndPost(canvas);
}

ধাপ ৪: ম্যানিফেস্ট

<?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>

TextureView বিকল্প (আধুনিক)

SurfaceView-এর পরিবর্তে TextureView ব্যবহার করা সহজ এবং linh hoạt:

<TextureView
    android:id="@+id/textureView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

// জাভাতে
TextureView textureView = findViewById(R.id.textureView);
textureView.setAlpha(0.5f); // আংশিক ট্রান্সপারেন্সি
textureView.setRotation(90); // রোটেশন সহজে

সাম্প্রতিক সমস্যা সমাধান

  • SurfaceView হলো উইন্ডো-লেভেল ভিউ, সাধারণ ViewGroup-এর সাথে মিশ্রণ কঠিন
  • TextureView সাধারণ View, তাই অ্যানিমেশন, রোটেশন, আলফা সহজ
  • ক্যামেরা প্রিভিউর জন্য CameraX লাইব্রেরি ব্যবহার করুন (জটিলতা কমায়)
  1. Android-এ ট্রান্সপেরেন্ট (পারদর্শী) অ্যাক্টিভিটি তৈরি করার পদ্ধতি

  2. অ্যান্ড্রয়েড অ্যাপে TextToSpeech তৈরি করার পদ্ধতি

  3. Facebook-এ Android অ্যাপ তৈরি করার পদ্ধতি

  4. উইন্ডোজ ১০-এ উইন্ডো ট্রান্সপারেন্ট করার পদ্ধতি