অ্যান্ড্রয়েডে বিজ্ঞপ্তি গ্রেডিয়েন্ট


109

আমি এমন একটি গ্রেডিয়েন্ট তৈরির চেষ্টা করছি যা পর্দার মাঝখানে থেকে সাদা রঙে বের হয় এবং স্ক্রিনের প্রান্তগুলির দিকে এগিয়ে যাওয়ার সাথে সাথে এটি কালো হয়ে যায়।

আমি এইরকম একটি "সাধারণ" গ্রেডিয়েন্ট তৈরি করার সময়, আমি বিভিন্ন আকার নিয়ে পরীক্ষা-নিরীক্ষা করছি:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#E9E9E9" android:endColor="#D4D4D4"
        android:angle="270"/>
</shape>

"ডিম্বাকৃতি"-আকারটি ব্যবহার করার সময় আমি কমপক্ষে একটি বৃত্তাকার আকার পেয়েছিলাম, তবে কোনও গ্রেডিয়েন্ট প্রভাব ছিল না। আমি কীভাবে এটি অর্জন করতে পারি? '

উত্তর:


241

আপনি ব্যবহার করে একটি বিজ্ঞপ্তি গ্রেডিয়েন্ট পেতে পারেন android:type="radial":

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:type="radial" android:gradientRadius="250dp"
        android:startColor="#E9E9E9" android:endColor="#D4D4D4" />
</shape>

108
এটি কেবল কাজ করেই নয়, বিশ্ব অনাহারকেও সমাধান করেছিল! ধন্যবাদ!
pgsandstrom

2
পার্শ্ব দ্রষ্টব্য: রঙে স্বচ্ছতা-বাইট ব্যবহার করাও সম্ভব। # ff00ff00 থেকে # 7f0000ff সম্পূর্ণরূপে অস্বচ্ছ লাল থেকে আধা স্বচ্ছ নীল হয়ে যাবে।
সাইমন ফারসবার্গ

10
অ্যান্ড্রয়েড: গ্রেডিয়েন্টরিডিয়াস = "250" উপেক্ষা করা হবে। আপনার পিক্স বা ডিপি মান সহ একটি মাত্রা সংস্থানটি নির্দেশ করা উচিত, যেমন: অ্যান্ড্রয়েড: গ্রেডিয়েন্টআরডিয়াস = "@ মাত্রা / গ্রেডিয়েন্ট_রাডিয়াস"
বোলিং

2
ধন্যবাদ বোলিং, আপনি ঠিক বলেছেন যে অ্যান্ড্রয়েড: গ্রেডিয়েন্টআরডিয়াস = "250" মোটেও কাজ করে না, আমি অনুমান করি এটি পুরানো অ্যান্ড্রয়েড সংস্করণগুলিতে আলাদাভাবে আচরণ করেছে।
জাস্টিন

112

একটি নতুন ধারণা শেখার সময় আমি সবসময় চিত্রগুলিকে সহায়ক বলে মনে করি, সুতরাং এটি পরিপূরক উত্তর।

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

এর %pঅর্থ পিতামাতার শতকরা এক ভাগ, যা আমরা আমাদের অঙ্কনযোগ্যকে সেট করে থাকি না কেন তার দৃest় মাত্রার শতাংশ a উপরের চিত্রগুলি gradientRadiusএই কোডটি পরিবর্তন করে তৈরি করা হয়েছিল

my_gradient_drawable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:type="radial"
        android:gradientRadius="10%p"
        android:startColor="#f6ee19"
        android:endColor="#115ede" />
</shape>

যা backgroundএই মত একটি দর্শনের বৈশিষ্ট্য উপর সেট করা যেতে পারে

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

কেন্দ্র

আপনি দিয়ে ব্যাসার্ধের কেন্দ্র পরিবর্তন করতে পারেন

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

যেখানে দশমিক প্রস্থ এবং জন্য উচ্চতা ভগ্নাংশ হয় xএবং yযথাক্রমে।

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

নথিপত্র

এখানে ডকুমেন্টেশন থেকে কিছু নোট দেওয়া আছে যাতে আরও কিছু জিনিস বোঝানো হয়।

android:gradientRadius

গ্রেডিয়েন্টের ব্যাসার্ধ, কেবলমাত্র রেডিয়াল গ্রেডিয়েন্ট সহ ব্যবহৃত হয়। আকারের ন্যূনতম মাত্রার সাথে সম্পর্কিত একটি সুস্পষ্ট মাত্রা বা ভগ্নাংশের মান হতে পারে।

"1.2" এর মতো একটি ভাসমান পয়েন্টের মান হতে পারে।

একটি মাত্রা মান হতে পারে যা "14.5sp" এর মতো একটি ইউনিটের সাথে সংযুক্ত একটি ভাসমান পয়েন্ট নম্বর। উপলব্ধ ইউনিটগুলি হ'ল: পিএক্স (পিক্সেল), ডিপি (ঘনত্ব-স্বাধীন পিক্সেল), এসপি (পছন্দসই ফন্টের আকারের উপর ভিত্তি করে স্কেল করা পিক্সেল), ইন (ইঞ্চি) এবং মিমি (মিলিমিটার)।

ভগ্নাংশের মান হতে পারে, যা "14.5%" এর মতো% বা% p এর সাথে সংযুক্ত একটি ভাসমান পয়েন্ট সংখ্যা is % প্রত্যয় সর্বদা মানে বেস আকারের শতাংশ; alচ্ছিক% p প্রত্যয়টি কিছু প্যারেন্ট পাত্রে আপেক্ষিক আকার সরবরাহ করে।


কিকাত টাইপের রেডিয়াল কাজ করবে যখন আপনি গ্রেডিয়েন্ট ব্যাসার্ধ থেকে% পি সরিয়ে ফেলবেন কিকাত অ্যান্ড্রয়েডের জন্য: গ্রেডিয়েন্টআরডিয়াস = "10"
মেহমুডনিসার 125

1
@ মেহমুডনিসার १२৫, আমি ডকুমেন্টেশন থেকে একটি নোট যুক্ত করেছি যা অন্তর্ভুক্ত করার সাথে %না পার্থক্য ব্যাখ্যা করে ।
সুরগাচ

4

আপনার আরও নিয়ন্ত্রণের প্রয়োজন হলে আপনি কোডে এটিও করতে পারেন, উদাহরণস্বরূপ একাধিক রঙ এবং অবস্থান নির্ধারণ। একটি অঙ্কনীয় রেডিয়াল গ্রেডিয়েন্ট তৈরি করতে এখানে আমার কোটলিন স্নিপেট রয়েছে:

object ShaderUtils {
    private class RadialShaderFactory(private val colors: IntArray, val positionX: Float,
                                      val positionY: Float, val size: Float): ShapeDrawable.ShaderFactory() {

        override fun resize(width: Int, height: Int): Shader {
            return RadialGradient(
                    width * positionX,
                    height * positionY,
                    minOf(width, height) * size,
                    colors,
                    null,
                    Shader.TileMode.CLAMP)
        }
    }

    fun radialGradientBackground(vararg colors: Int, positionX: Float = 0.5f, positionY: Float = 0.5f,
                                 size: Float = 1.0f): PaintDrawable {
        val radialGradientBackground = PaintDrawable()
        radialGradientBackground.shape = RectShape()
        radialGradientBackground.shaderFactory = RadialShaderFactory(colors, positionX, positionY, size)
        return radialGradientBackground
    }
}

বেসিক ব্যবহার (তবে অতিরিক্ত প্যারামগুলির সাথে সামঞ্জস্য করতে নির্দ্বিধায়):

view.background = ShaderUtils.radialGradientBackground(Color.TRANSPARENT, BLACK)

1

আমার ধারণা আপনার অ্যান্ড্রয়েড যুক্ত করা উচিত: সেন্টার কালার

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
  android:startColor="#FFFFFF"
  android:centerColor="#000000"
  android:endColor="#FFFFFF"
  android:angle="0" />
</shape>

এই উদাহরণটি সাদা থেকে কালো থেকে সাদা পর্যন্ত একটি অনুভূমিক গ্রেডিয়েন্ট প্রদর্শন করে।


13
এই উত্তরটি সমাধান হিসাবে চিহ্নিত করা উচিত। আপনি কোনও রেডিয়াল গ্রেডিয়েন্ট বানাতে চান না কেন, একটি অনুভূমিক করুন!
এরদোমিস্টার

1

<gradient
    android:centerColor="#c1c1c1"
    android:endColor="#4f4f4f"
    android:gradientRadius="400"
    android:startColor="#c1c1c1"
    android:type="radial" >
</gradient>


1

গ্রেডিয়েন্ট, স্টোক এবং বৃত্তাকার আকার সহ সম্পূর্ণ এক্সএমএল এখানে।

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

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >

    <!-- You can use gradient with below attributes-->
    <gradient
        android:angle="90"
        android:centerColor="#555994"
        android:endColor="#b5b6d2"
        android:startColor="#555994"
        android:type="linear" />

    <!-- You can omit below tag if you don't need stroke -->
   <stroke android:color="#3b91d7" android:width="5dp"/>

    <!-- Set the same value for both width and height to get a circular shape -->
    <size android:width="200dp" android:height="200dp"/>


    <!--if you need only a single color filled shape-->
    <solid android:color="#e42828"/>


</shape>

ভালো উদাহরণ. ধন্যবাদ।
সিনান সিলান 21

-1

<!-- Drop Shadow Stack -->
<item>
    <shape android:shape="oval">
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#00CCCCCC" />

        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape android:shape="oval">
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#10CCCCCC" />

        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape android:shape="oval">
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#20CCCCCC" />

        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape android:shape="oval">
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#30CCCCCC" />

        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape android:shape="oval">
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#50CCCCCC" />

        <corners android:radius="3dp" />
    </shape>
</item>

<!-- Background -->
<item>
    <shape android:shape="oval">
        <gradient
            android:startColor="@color/colorAccent_1"
            android:centerColor="@color/colorAccent_2"
            android:endColor="@color/colorAccent_3"
            android:angle="45"
            />
        <corners android:radius="3dp" />
    </shape>
</item>

<color name="colorAccent_1">#6f64d6</color>
<color name="colorAccent_2">#7668F8</color>
<color name="colorAccent_3">#6F63FF</color>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.