Lesson: 7 -Image In ImageView and Image in WebView

আমরা প্রথমে এ্যাসেট ফোল্ডারে আরেকটি ইমেজ রাখবো :




এবার ইমেজভিউ.এক্সএমএল ফাইলটি ওপেন করে আরেকটি ইমেজভিউ সেট করবো যার আইডি নাম হবে  ইমেজভিউ২ :

<ImageView    android:id="@+id/imageView2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_marginBottom="8dp"    android:layout_marginEnd="8dp"    android:layout_marginLeft="8dp"    android:layout_marginRight="8dp"    android:layout_marginStart="8dp"    android:layout_marginTop="8dp"    app:layout_constraintBottom_toBottomOf="parent"    app:layout_constraintEnd_toEndOf="parent"    app:layout_constraintHorizontal_bias="0.28"    app:layout_constraintStart_toStartOf="parent"    app:layout_constraintTop_toTopOf="parent"    app:layout_constraintVertical_bias="0.39"    app:srcCompat="@mipmap/ic_launcher" />




এবার ইমেজভিউ জাভা ফাইল ওপেন করে নিচের কোডটুকু অনক্রিয়েট এর বাইরে লিখুন :

public Drawable loadDrawableFromAssets(Context context, String path)
{
    InputStream stream = null;
    try    {
        stream = context.getAssets().open(path);
        return Drawable.createFromStream(stream, null);
    }
    catch (Exception ignored) {} finally    {
        try        {
            if(stream != null)
            {
                stream.close();
            }
        } catch (Exception ignored) {}
    }
    return null;
}

এবং নিচের কোডটুকু অনক্রিয়েট এর ভেতরে লিখুন :

android.widget.ImageView imageView2 = findViewById(R.id.imageView2);

imageView2.setImageDrawable(loadDrawableFromAssets(getApplicationContext(),"image24.jpg"));

নিচের মত হবে : 





এবার প্রোগ্রামটি রান করুন।


ব্যাখ্যা : আমরা প্রথমে loadDrawableFromAssets এই প্রোগ্রামটি লিখেছি অনক্রিয়েট এর বাইরে। এই প্রোগ্রামে বলা হয়েছে কিভাবে  এ্যাসেট ফোল্ডারের মধ্য থেকে একটি ইমেজকে ড্রয়েবল হিসেবে লোড করবে।
এরপর loadDrawableFromAssets  এই ফাংশনটিকে আমরা অনক্রিয়েট এর মধ্যে কল করেছি এভাবে :
imageView2.setImageDrawable(loadDrawableFromAssets(getApplicationContext(),"image24.jpg"));

সুতরাং, এখন যেখানেই আমরা ইমেজ এর নাম দিয়ে এই ফাংশনটিকে ইমেজভিউ এর জন্য কল করবো সেখানেই ইমজটি প্রদর্শিত হবে। 


=======================

=======================
ঠিক  একই ভাবে ইমেজভিউ লেআউট ফাইলে  আরেকটি ইমেজ ভিউ তৈরী করুন।  
এ্যাসেট ফোল্ডারে আরেকটি ইমেজ রাখুন। 

মনে করি, এক্সএমএল ফাইলে ইমেজভিউ আইডি imageView3

এবং, প্রজেক্ট এ্যাসেট ফোল্ডারে যে ইমেজটি রেখেছি তার নাম image25.jpg


এবার  জাভা ফাইলে আউটসাইড অনক্রিয়েট এ  নিচের ফাংশনটি লিখুন  : 

public Bitmap loadBitmapFromAssets(Context context, String path)
{
    InputStream stream = null;
    try    {
        stream = context.getAssets().open(path);
        return BitmapFactory.decodeStream(stream);
    }
    catch (Exception ignored) {} finally    {
        try        {
            if(stream != null)
            {
                stream.close();
            }
        } catch (Exception ignored) {}
    }
    return null;
}


অনক্রিয়েট এর মধ্যে ফাংশনটি কল করুন এভাবে : 

android.widget.ImageView imageView3 = findViewById(R.id.imageView3);
imageView3.setImageBitmap(loadBitmapFromAssets(getApplicationContext(),"image25.jpg"));

এবার  এ্যাপটি রান করুন। 

উপরের পদ্ধতিগুলোর মধ্যে দেখুন কোন পদ্ধতিতে আপনার ইমেজ সুন্দর ভাবে আসে। সেই পদ্ধতিটিই ব্যবহার করুন। 

*********************
*********************

পূর্ণাঙ্গ কোড : 


আপনাদের সুবিধার্থে নিচে  এক্সএমএল ফাইল এবং জাভা ফাইল পুরো কোড গুলো একসাথে দেওয়া হলো : 

imageview.xml : 
=====================


<ImageView    android:id="@+id/imageView"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_marginBottom="8dp"    android:layout_marginEnd="8dp"    android:layout_marginLeft="8dp"    android:layout_marginRight="8dp"    android:layout_marginStart="8dp"    android:layout_marginTop="8dp"
    android:src="@drawable/ic_launcher_background"    app:layout_constraintBottom_toBottomOf="parent"    app:layout_constraintEnd_toEndOf="parent"    app:layout_constraintHorizontal_bias="0.03"    app:layout_constraintStart_toStartOf="parent"    app:layout_constraintTop_toTopOf="parent"    app:layout_constraintVertical_bias="0.018" />

<ImageView    android:id="@+id/imageView2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_marginBottom="8dp"    android:layout_marginEnd="8dp"    android:layout_marginLeft="8dp"    android:layout_marginRight="8dp"    android:layout_marginStart="8dp"    android:layout_marginTop="8dp"    app:layout_constraintBottom_toBottomOf="parent"    app:layout_constraintEnd_toEndOf="parent"    app:layout_constraintHorizontal_bias="0.844"    app:layout_constraintStart_toStartOf="parent"    app:layout_constraintTop_toTopOf="parent"    app:layout_constraintVertical_bias="0.056"    app:srcCompat="@mipmap/ic_launcher" />

<ImageView    android:id="@+id/imageView3"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_marginBottom="8dp"    android:layout_marginEnd="8dp"    android:layout_marginLeft="8dp"    android:layout_marginRight="8dp"    android:layout_marginStart="8dp"    android:layout_marginTop="8dp"    app:layout_constraintBottom_toBottomOf="parent"    app:layout_constraintEnd_toEndOf="parent"    app:layout_constraintStart_toStartOf="parent"    app:layout_constraintTop_toTopOf="parent"    app:layout_constraintVertical_bias="0.352"    app:srcCompat="@mipmap/ic_launcher_round" />







এরপর ImageView.java  জাভা আউটসাইড অনক্রিয়েট : 

public Drawable loadDrawableFromAssets(Context context, String path)
{
    InputStream stream = null;
    try    {
        stream = context.getAssets().open(path);
        return Drawable.createFromStream(stream, null);
    }
    catch (Exception ignored) {} finally    {
        try        {
            if(stream != null)
            {
                stream.close();
            }
        } catch (Exception ignored) {}
    }
    return null;
}



public Bitmap loadBitmapFromAssets(Context context, String path)
{
    InputStream stream = null;
    try    {
        stream = context.getAssets().open(path);
        return BitmapFactory.decodeStream(stream);
    }
    catch (Exception ignored) {} finally    {
        try        {
            if(stream != null)
            {
                stream.close();
            }
        } catch (Exception ignored) {}
    }
    return null;
}



এরপর ImageView.java  জাভা   ইনসাইড অনক্রিয়েট : 

       //==========================//1//===========================//       
    android.widget.ImageView imageView = findViewById(R.id.imageView);


        try        {
            // get input stream            InputStream ims = getAssets().open("image28.jpg");
            // load image as Drawable            Drawable d = Drawable.createFromStream(ims, null);
            // set image to ImageView            imageView.setImageDrawable(d);
           // imageView2.setImageDrawable(d);            //now close the stream:            ims .close();
        }
        catch(IOException ex)
        {
            return;
        }

        //==========================//2//=============================//
        final android.widget.ImageView imageView2 = findViewById(R.id.imageView2);
        imageView2.setImageDrawable(loadDrawableFromAssets(getApplicationContext(),"image24.jpg"));




        //===============================//3//===========================//
        android.widget.ImageView imageView3 = findViewById(R.id.imageView3);
        imageView3.setImageBitmap(loadBitmapFromAssets(getApplicationContext(),"image25.jpg"));




==================
সারাংশ :
Lesson 6.1  এবং  Lesson 6.2  তে আমরা   ইমেজভিউতে ইমেজ প্রদর্শনের জন্য এক্স এম এল এর দুটি পদ্ধতি এবং   জাভার তিনটি পদ্ধতি (মোট পাচটি পদ্ধতি)  নিয়ে আলোচনা করলাম  এবং তিনটি ইমেজকে ইমেজ ভিউতে প্রদর্শন করলাম । আমাদের প্রজেক্ট এ্যাসেট ফোল্ডারের তিনটি ইমেজ নিম্নরূপ :



উপরের চিত্রের তিনটি ইমেজকে আমরা তিন ধরণের পদ্ধতিতে  উপরের পূর্ণাঙ্গ  জাভা কোডের মাধ্যমে ইমেজভিউতে প্রদর্শন করিয়েছি। মোবাইলে ছবি তিনটি নিচের মত প্রদর্শিত হবে :




সুতরাং, এই তিন ধরণের মধ্যে আপনার যে ধরণের প্রয়োজন সে অনুযায়ী কোড ব্যবহার করবেন। আর যদি শুধু এক্সএমএল এর মাধ্যমে সিস্টেম ইমেজ প্রদর্শন করতে চান তবে জাভার কলিং কোড গুলো মুছে নিবেন।

===============================
(   নোট :  তবে ইমেজ এর বিভিন্ন সুবিধা ইনষ্ট্যান্ট পাওয়ার জন্য  ইমেজভিউতে না প্রদর্শন করে ওয়েবভিউতে প্রদর্শন করলে ভালো হয়। ইমেজ জুমিং, স্লাইডিং  সহ অনেক সুবিধা পাওয়া যায়।  আমরা ওয়েবভিউ এর লেসনে এ ব্যাপারে আলোচনা করব। ) 
=============================

এই প্রজেক্ট ফাইলটি ডাউনলোড করার জন্য এ্যাডমিন এর সাথে যোগাযোগ করতে পারেন  : 


No comments:

Post a Comment