অ্যান্ড্রয়েডে কিভাবে গ্রেডিয়েন্ট ব্যাকগ্রাউন্ড তৈরি করা যায়


229

আমি গ্রেডিয়েন্ট পটভূমি তৈরি করতে চাই যেখানে গ্রেডিয়েন্টটি উপরের অর্ধে এবং নীচের এই চিত্রের মতো নীচের অর্ধে একটি শক্ত রঙ রয়েছে:

centerColorনীচে এবং উপরের অংশটি ছড়িয়ে দেওয়ার জন্য আমি ছড়িয়ে পড়তে পারি না ।

বোতামের গ্রেডিয়েন্টে, একটি সাদা অনুভূমিক রেখা নীচের দিকে নীচে এবং বোতামের দিকে ফিকে।

আমি কীভাবে প্রথম চিত্রের মতো একটি পটভূমি তৈরি করতে পারি? আমি কীভাবে ছোট করতে পারি centerColorযা ছড়িয়ে নেই?

এটি উপরের ব্যাকগ্রাউন্ড বোতামের এক্সএমএল কোড।

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <gradient 
        android:startColor="#6586F0"
        android:centerColor="#D6D6D6"
        android:endColor="#4B6CD6"
        android:angle="90"/>
    <corners 
        android:radius="0dp"/>


</shape>

1
ধন্যবাদ আমি ইতিমধ্যে এটি সমাধান করেছি। তবে আপনি আরও উত্তর দিলে আমি গর্বিত হব। stackoverflow.com/questions/6652547/...
kongkea

উত্তর:


59

উপরের এবং নীচে 'ব্যান্ডগুলি' এক ফাইলে একত্রিত করতে আপনি একটি এক্সএমএল স্তর-তালিকা ব্যবহার করে এই 'অর্ধ-গ্রেডিয়েন্ট' চেহারাটি তৈরি করতে পারেন । প্রতিটি ব্যান্ড একটি এক্সএমএল আকার।

বিস্তারিত টিউটোরিয়ালের জন্য পূর্ববর্তী উত্তরটি এসও তে দেখুন: মাল্টি-গ্রেডিয়েন্ট আকার


317

এটি দিয়ে চেষ্টা করুন:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >

    <gradient
        android:angle="90"
        android:centerColor="#555994"
        android:endColor="#b5b6d2"
        android:startColor="#555994"
        android:type="linear" />

    <corners 
        android:radius="0dp"/>

</shape>

আমি যদি লিনিয়ার লেআউটের জন্য পটভূমিতে গ্রেডিয়েন্ট স্থাপন করতে চাই তবে ??
অঙ্কিত শ্রীবাস্তব

@ অঙ্কিত এটি লেআউটটি পূরণ করতে স্কেল করবে
দাউদ ড্রজড

2
@ অঙ্কিত: আপনি একটি অঙ্কনীয় .xml ফাইল তৈরি করুন, উপরের কোডটি অনুলিপি করুন এবং এই ফাইলটিতে পেস্ট করুন, মজা করুন <আপেক্ষিক লেআউট ... অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড = "@ ড্রয়েবল / আপনার_এক্সএমএল_নাম" ...>
টমিএনএস

এছাড়াও, যদি আপনি গ্রেডিয়েন্টটি পুরো স্ক্রীন জুড়ে বিবর্ণ হয়ে যেতে চান তবে সেন্টার ব্যান্ডটিকে 50% অস্বচ্ছতা তৈরি করুন। এই ক্ষেত্রে "# 50555994"
জাচারি

@ প্রতীক শর্মা আমি নির্দিষ্ট অংশ থেকে এই গ্রেডিয়েন্টটি শুরু করার জন্য কীভাবে নির্দিষ্ট করতে পারি? মানে আমি কেবল ডান দিক থেকে রঙ পরিবর্তনটি একটু শুরু করতে চাই
ব্যবহারকারী

315

ভিজ্যুয়াল উদাহরণগুলি এই ধরণের প্রশ্নের সাথে সহায়তা করে।

boilerplate

গ্রেডিয়েন্ট তৈরি করার জন্য, আপনি রেজো / ড্রইবেলে একটি এক্সএমএল ফাইল তৈরি করেন। আমি আমার_ গ্রেডিয়েন্ট_ড্রেইবল.এক্সএমএল কল করছি :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:type="linear"
        android:angle="0"
        android:startColor="#f6ee19"
        android:endColor="#115ede" />
</shape>

আপনি এটিকে কিছু দেখার পটভূমিতে সেট করেছেন। উদাহরণ স্বরূপ:

<View
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:background="@drawable/my_gradient_drawable"/>

টাইপ = "রৈখিক"

angleএকটি linearটাইপ জন্য সেট করুন । এটি 45 ডিগ্রির একাধিক হতে হবে।

<gradient
    android:type="linear"
    android:angle="0"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

এখানে চিত্র বর্ণনা লিখুন

টাইপ = "রশ্মীয়"

gradientRadiusএকটি radialটাইপ জন্য সেট করুন । ব্যবহারের %pঅর্থ এটি পিতামাতার ক্ষুদ্রতম মাত্রার এক শতাংশ।

<gradient
    android:type="radial"
    android:gradientRadius="10%p"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

এখানে চিত্র বর্ণনা লিখুন

টাইপ = "মিষ্টির"

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

<gradient
    android:type="sweep"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

এখানে চিত্র বর্ণনা লিখুন

কেন্দ্র

আপনি সুইপ বা রেডিয়াল ধরণের কেন্দ্র পরিবর্তন করতে পারেন। মানগুলি প্রস্থ এবং উচ্চতার ভগ্নাংশ। আপনি %pস্বরলিপি ব্যবহার করতে পারেন ।

android:centerX="0.2"
android:centerY="0.7"

এখানে চিত্র বর্ণনা লিখুন



33

প্রথমে আপনাকে নীচে গ্রেডিয়েন্ট.এক্সএমএল তৈরি করতে হবে

<shape>
    <gradient android:angle="270" android:endColor="#181818" android:startColor="#616161" />

    <stroke android:width="1dp" android:color="#343434" />
</shape>

তারপরে আপনার লেআউটের পটভূমিতে উপরের গ্রেডিয়েন্টটি উল্লেখ করা দরকার s

<?xml version="1.0" encoding="utf-8"?>
<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/gradient"
    >   
</LinearLayout>

বইটিতে আমি এটি পড়ছি তা তাদের ড্রয়যোগ্য ফোল্ডারে রাখার বিষয়ে কথা বলছে। আমার ফোল্ডারে প্রতি কি একটি দরকার?
জেগালার্ডো

1
অঙ্কনযোগ্য ফোল্ডারে তৈরি করুন এবং সেখান থেকে গ্রেডিয়েন্ট.এক্সএমএল ফাইলটি এতে প্রবেশ করুন আপনি কোনও অ্যাক্সেস করতে পারবেন to একাধিক ফোল্ডার তৈরি করার দরকার নেই।
হরিশ

22

অথবা আপনি পিএসডি তে যা ভাবেন তা কোডে ব্যবহার করতে পারেন:

    private void FillCustomGradient(View v) {
        final View view = v;
        Drawable[] layers = new Drawable[1];

        ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() {
            @Override
            public Shader resize(int width, int height) {
                LinearGradient lg = new LinearGradient(
                        0,
                        0,
                        0,
                        view.getHeight(),
                        new int[] {
                                 getResources().getColor(R.color.color1), // please input your color from resource for color-4
                                 getResources().getColor(R.color.color2),
                                 getResources().getColor(R.color.color3),
                                 getResources().getColor(R.color.color4)},
                        new float[] { 0, 0.49f, 0.50f, 1 },
                        Shader.TileMode.CLAMP);
                return lg;
            }
        };
        PaintDrawable p = new PaintDrawable();
        p.setShape(new RectShape());
        p.setShaderFactory(sf);
        p.setCornerRadii(new float[] { 5, 5, 5, 5, 0, 0, 0, 0 });
        layers[0] = (Drawable) p;

        LayerDrawable composite = new LayerDrawable(layers);
        view.setBackgroundDrawable(composite);
    }

এবং এটি দ্রুত তারপর হওয়া উচিত স্তর তালিকাভুক্ত করে ব্যবহার
miroslavign

8
//Color.parseColor() method allow us to convert
// a hexadecimal color string to an integer value (int color)
int[] colors = {Color.parseColor("#008000"),Color.parseColor("#ADFF2F")};

//create a new gradient color
GradientDrawable gd = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);

gd.setCornerRadius(0f);
//apply the button background to newly created drawable gradient
btn.setBackground(gd);

এখান থেকে দেখুন https://android--code.blogspot.in/2015/01/android-button-gradient-color.html


3

অঙ্কনযোগ্য ফোল্ডারে এই কোডটি ব্যবহার করুন।

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#3f5063" />
    <corners
        android:bottomLeftRadius="30dp"
        android:bottomRightRadius="0dp"
        android:topLeftRadius="30dp"
        android:topRightRadius="0dp" />
    <padding
        android:bottom="2dp"
        android:left="2dp"
        android:right="2dp"
        android:top="2dp" />
    <gradient
        android:angle="45"
        android:centerColor="#015664"
        android:endColor="#636969"
        android:startColor="#2ea4e7" />
    <stroke
        android:width="1dp"
        android:color="#000000" />
</shape>

1

কেন একটি চিত্র বা 9 প্যাচ চিত্র তৈরি করে তা ব্যবহার করবেন না?

এটি কীভাবে করবেন তার নীচের লিঙ্কটিতে একটি দুর্দান্ত গাইড রয়েছে:

http://android.amberfog.com/?p=247

আপনি যদি কোনও শেপ ব্যবহারের জন্য জেদ করেন তবে নীচের সাইটটি চেষ্টা করুন (নীচে বামদিকে অ্যান্ড্রয়েড নির্বাচন করুন): http://angrytools.com/gradient/

এই লিঙ্কটিতে আপনার যেটির সাথে আমি একটি অনুরূপ গ্রেডিয়েন্ট তৈরি করেছি (নির্ভুল নয়): http://angrytools.com/gradient/?0_6586f0,54_4B6CD6,2_D6D6D6&0_100,100_100&l_269

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.