কীভাবে কোনও অ্যাপের পটভূমি চিত্রটি পুনরাবৃত্তি করা যায়


314

আমি আমার অ্যাপ্লিকেশনটিতে একটি ব্যাকগ্রাউন্ড চিত্র সেট করেছি, তবে পটভূমি চিত্রটি ছোট এবং আমি এটি পুনরাবৃত্তি করে পুরো স্ক্রীনটি পূরণ করতে চাই। আমার কি করা উচিৎ?

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg"
    android:tileMode="repeat">

উত্তর:


429

ঠিক আছে, আমি আমার অ্যাপ্লিকেশনটিতে যা পেয়েছি তা এখানে। এতে ListViewস্ক্রোল করার সময় কালো হওয়া থেকে রোধ করার জন্য একটি হ্যাক অন্তর্ভুক্ত রয়েছে ।

অঙ্কনযোগ্য / অ্যাপ_ব্যাকগ্রাউন্ড.এক্সএমএল :

<?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/actual_pattern_image"
        android:tileMode="repeat" />

মান / শৈলী.এক্সএমএল :

<?xml version="1.0" encoding="utf-8"?>
<resources>

  <style name="app_theme" parent="android:Theme">
    <item name="android:windowBackground">@drawable/app_background</item>
    <item name="android:listViewStyle">@style/TransparentListView</item>
    <item name="android:expandableListViewStyle">@style/TransparentExpandableListView</item>
  </style>

  <style name="TransparentListView" parent="@android:style/Widget.ListView">
    <item name="android:cacheColorHint">@android:color/transparent</item>
  </style>

  <style name="TransparentExpandableListView" parent="@android:style/Widget.ExpandableListView">
    <item name="android:cacheColorHint">@android:color/transparent</item>
  </style>

</resources>

অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল :

//
<application android:theme="@style/app_theme">
//

1
এটিও চেষ্টা করে দেখুন: অ্যান্ড্রয়েড: মাধ্যাকর্ষণ = "ক্লিপ_হোরাইজেন্টাল" --- এটি চিত্রের বিকৃতি এড়ায়
ফিলিপ

2
আমি এটি চেষ্টা করেছি কিন্তু সমস্ত স্ক্রিনে প্রসারিত একমাত্র টাইল দেখেছি :(
সের্গেই মেটলভ

যদি আমার কাছে ScrollViewএটির পুনরাবৃত্তি করার জন্য একটি ব্যাকগ্রাউন্ড থাকে এবং আমার একটি দীর্ঘ দীর্ঘ তালিকা ScrollViewথাকে তবে খুব দীর্ঘ হয়ে গেলে আমার কি আউটঅফমিমি ব্যতিক্রম নিয়ে সমস্যা হবে না ?
আন্দ্রেইগোগদান

একটি বিষয় মনে রাখবেন যে আপনার ফোল্ডারগুলি আঁকিয়ে-এইচডিপিআই, অঙ্কনযোগ্য-এমডিপিআই এবং অঙ্কনযোগ্য-এলডিপিআই থাকা উচিত, আপনাকে এই backrepeat.xML ফাইল এবং প্রাসঙ্গিক চিত্রগুলি এগুলির প্রত্যেকটিতে যুক্ত করতে হবে যাতে এই কার্যকারিতাটি উচ্চতর হয়, মাঝারি এবং নিম্ন ডিপিআই (প্রতি ইঞ্চি বিন্দু) পর্দার আকার।
সাবের তাবতাবই ইয়াজদি

2
@ সাববার্তাবতবায়েইজদী আপনার কেবল সেই ফোল্ডারে চিত্রের প্রয়োজন images এক্সএমএলকে drawable(উইথউড -*dpi) ফোল্ডারে রাখা যেতে পারে ।
জারোস্লাভ

176

এটি করার জন্য অঙ্কনযোগ্য এক্সএমএলে একটি সম্পত্তি রয়েছে। অ্যান্ড্রয়েড tileMode = "পুনরাবৃত্তি"

এই সাইটটি দেখুন: http://androidforbeginners.blogspot.com/2010/06/how-to-tile-background-image-in-android.html


38
আমি সত্যিই জানি না এটি এত নিম্ন রেটযুক্ত কীভাবে। ঝাঁক প্রবৃত্তি? এটি টাইলড ব্যাকগ্রাউন্ডের নেটিভ বাস্তবায়ন
মাইকা কে

5
এটি এক কবজির মতো কাজ করে। এছাড়াও এটি এক এটি সঠিক উপায় মত বলে মনে হচ্ছে।
জে ক্যাসো

3
আমি সম্মত হই যে এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি সত্যিই সহজ এবং পুরোপুরি কাজ করে!
হুং

6
+1 টি শুধুমাত্র এক জিনিস সংশোধন করা হবে যে প্রবন্ধে ভুলভাবে উল্লেখ করা হয়: you'll need to add this backrepeat.xml file and the relevant images to each of these to allow this functionality in high, medium and low dpi। আপনাকে কেবল সমস্ত ঘনত্বের বালতিতে রেফারেন্সড ড্রয়াবল রাখতে হবে। রেফারেন্সিং এক্সএমএল অঙ্কনযোগ্য drawableফোল্ডারে রাখা যেতে পারে , এটি যথেষ্ট।
কাও

এই আপনি কল করেছেন একজন সমর্থক
মুনিব মীর্জা

69

এখানে পুনরাবৃত্তি চিত্রের খাঁটি-জাভা বাস্তবায়ন:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.bg_image);
    BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp);
    bitmapDrawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
    LinearLayout layout = new LinearLayout(this);
    layout.setBackgroundDrawable(bitmapDrawable);
}

এই ক্ষেত্রে, আমাদের পটভূমি চিত্রটি res / অঙ্কনযোগ্য / bg_image.png সংরক্ষণ করতে হবে।


6
android.graphics.Shader
পিটার উইলজি

যদি আমার কাছে ScrollViewএটির পুনরাবৃত্তি করার জন্য একটি ব্যাকগ্রাউন্ড থাকে এবং আমার একটি দীর্ঘ দীর্ঘ তালিকা ScrollViewথাকে তবে খুব দীর্ঘ হয়ে গেলে আমার কি আউটঅফমিমি ব্যতিক্রম নিয়ে সমস্যা হবে না ?
আন্দ্রেইগোগদান

কেন এটি আর কাজ করা উচিত নয়? অবচয় হ্রাস করার অর্থ এই আদেশগুলি আর ব্যবহার করা উচিত নয় কারণ এগুলি ভবিষ্যতে কিছু সময় অবসরপ্রাপ্ত হতে পারে। এপিআই 19-এ, এটি এখনও @ প্লোম্যানের প্রস্তাবিত হিসাবে কাজ করে। এছাড়াও, বিটম্যাপড্রেভেবলকে হ্রাস করা হয় না, তবে এর কয়েকটি পদ্ধতি। আমি উপরের কোডটি সম্পাদনা করেছি তাই আমাদের অবহেলা পদ্ধতি ব্যবহার করতে হবে না।
অলিভার হাউসলার

16

লাঙলের জবাব প্রসারিত করে, এখানে জাভা দিয়ে ব্যাকগ্রাউন্ড চিত্র পরিবর্তন করার অ-অবচয় সংস্করণ দেওয়া আছে।

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bitmap bmp = BitmapFactory.decodeResource(getResources(),
            R.drawable.texture);
    BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(),bmp);
    bitmapDrawable.setTileModeXY(Shader.TileMode.REPEAT,
            Shader.TileMode.REPEAT);
    setBackground(bitmapDrawable);
}

3
// Prepared By Muhammad Mubashir.
// 26, August, 2011.
// Chnage Back Ground Image of Activity.

package com.ChangeBg_01;

import com.ChangeBg_01.R;

import android.R.color;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class ChangeBg_01Activity extends Activity
{
    TextView tv;
    int[] arr = new int[2];
    int i=0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tv = (TextView)findViewById(R.id.tv);
        arr[0] = R.drawable.icon1;
        arr[1] = R.drawable.icon;

     // Load a background for the current screen from a drawable resource
        //getWindow().setBackgroundDrawableResource(R.drawable.icon1) ;

        final Handler handler=new Handler();
        final Runnable r = new Runnable()
        {
            public void run() 
            {
                //tv.append("Hello World");
                if(i== 2){
                    i=0;            
                }

                getWindow().setBackgroundDrawableResource(arr[i]);
                handler.postDelayed(this, 1000);
                i++;
            }
        };

        handler.postDelayed(r, 1000);
        Thread thread = new Thread()
        {
            @Override
            public void run() {
                try {
                    while(true) 
                    {
                        if(i== 2){
                            //finish();
                            i=0;
                        }
                        sleep(1000);
                        handler.post(r);
                        //i++;
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        };


    }
}

/*android:background="#FFFFFF"*/
/*
ImageView imageView = (ImageView) findViewById(R.layout.main);
imageView.setImageResource(R.drawable.icon);*/

// Now get a handle to any View contained 
// within the main layout you are using
/*        View someView = (View)findViewById(R.layout.main);

// Find the root view
View root = someView.getRootView();*/

// Set the color
/*root.setBackgroundColor(color.darker_gray);*/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.