কীভাবে সহজ লেআউটে রিপল এফেক্ট তৈরি করবেন


112

লেআউটটি স্পর্শ করার সময় আমি কীভাবে একটি সরল রৈখিক / আপেক্ষিক বিন্যাসে একটি রিপল প্রভাব ফেলতে পারি?

আমি লেআউটের পটভূমিটিকে এমন কিছুতে সেট করার চেষ্টা করেছি:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight" >

    <item android:drawable="@android:color/white"/>

</ripple>

তবে আমি কেবল একটি সরল সাদা ব্যাকগ্রাউন্ড এবং লেআউটটিকে স্পর্শ করার সময় কোনও রেপল প্রভাব দেখছি না। আমি কি ভুল করছি?

সম্পাদনা:

রেফারেন্সের জন্য, এখানে আমার লেআউট এক্সএমএল ফাইল রয়েছে:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:background="@drawable/test"
        android:clickable="true">
    </RelativeLayout>

2
রিপল হোস্টিং দর্শনটি সক্ষম এবং ক্লিকযোগ্য বা ফোকাসযোগ্য হতে হবে।
alanv

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

এছাড়াও, আমি <item android:drawable="@android:color/white"/>বিভাগটি সরিয়ে দিলে এটি কাজ করে । সুতরাং আমি নিশ্চিত নই যে আমি যদি লেআউটে কোনও পটভূমির রঙ চাইতাম তবে এটি কীভাবে কাজ করবে। ব্যাকগ্রাউন্ড কালার দিয়ে এটিকে অন্য লেআউটের উপরে রাখলে কাজ হয় না!
জাচ

4
আপনার দৃষ্টিতে রিপলটি কী রঙে আঁকছে, উদাহরণস্বরূপ রঙ কন্ট্রোলহাইটলাইটটি কোন রঙের সাথে সংশোধন করে?
অ্যালানভ

উত্তর:


260

আপনার লেআউটে এই বৈশিষ্ট্যগুলি সেট করুন (যদি আপনার লেআউটে ডিফল্ট সাদা / হালকা ব্যাকগ্রাউন্ড থাকে):

          android:clickable="true"
          android:focusable="true"
          android:background="?attr/selectableItemBackground"

এক্ষেত্রে আপনার পছন্দসই ছবি আঁকার দরকার নেই।

তবে, যদি আপনার লেআউটের একটি কালো / গা background় ব্যাকগ্রাউন্ড থাকে, আপনাকে নিজের মতো করে এটির মতো করে তৈরি করতে পারবেন:

<?xml version="1.0" encoding="utf-8"?>
<!-- An white rectangle ripple. -->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@android:color/white">
    <item
        android:id="@android:id/mask"
        android:gravity="center">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white"/>
        </shape>
    </item>
</ripple>

এবং তারপরে এই রিপলটিকে আপনার অ্যান্ড্রয়েড: পটভূমির সম্পত্তি হিসাবে আঁকতে সক্ষম করুন ।

আপনি এওএসপিতে এই ধরণের রিপলগুলির অনেকগুলি উদাহরণ দেখতে পাচ্ছেন: এখানে


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

1
@ আঞ্জুজর্মা আপনি কি রঙিন সংস্থান দেওয়ার চেষ্টা করেছেন background?
ইগোরগানাপলস্কি


31
আপনি যদি অন্য একটি ব্যাকগ্রাউন্ড রঙ চান তবে আপনি সেই রঙটিকে ব্যাকগ্রাউন্ড হিসাবে সেট করতে পারেন এবং "? অ্যাট্রি / নির্বাচনযোগ্য
আইটেমব্যাকগ্রাউন্ড

2
কি দারুন! এটা অসাধারণ. এটি উত্তর +1 হিসাবে চিহ্নিত করা উচিত
জিয়া উর রহমান

59

আমি ইগোর গণপলস্কির জবাব ছাড়াও এটি যুক্ত করছি যদি কেউ বিভিন্ন বর্ণের একটি লেআউট পেতে চায় এবং তার প্রভাবও ছড়িয়ে যায়। আপনি সহজেই এর মতো আঁকতে একটি রিপল প্রভাব তৈরি করুন:

ripple.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="@color/rippleColor"
    tools:targetApi="lollipop"> <!-- ripple effect color -->
    <item android:id="@android:id/background">
        <shape android:shape="rectangle">
            <solid android:color="@color/backgroundColor" /> <!-- background color -->
        </shape>
    </item>
</ripple>

তারপরে এটিকে আপনার লেআউটের পটভূমি হিসাবে বা কোনও উত্তরের হিসাবে ইগর গণপলস্কি তার উত্তরে উল্লেখ করেছেন।

android:clickable="true"
android:background="@drawable/ripple"

37

আপনাকে যে কোনও উইজেটে ( TextView/ Button) এ নিম্নলিখিত কোড স্নিপেট পরিবর্তন করতে হবে এবং আপনি রিপল এফেক্ট বাস্তবায়ন করতে পারেন :

android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"

এবং আপনি যেতে ভাল।


হুম ফোরগ্রাউন্ড? এটা অসাধারণ!
বদর

যদি আপনি ইতিমধ্যে একটি অ্যান্ড্রয়েড এই সহায়ক: পটভূমি = "@ রং / colorAccent" সেট
Aero

@ অ্যারো আপনি কোনও পটভূমি সেট না করলেও এটি সহায়ক।
পঙ্কজ লিলান

1
এটি উইজেটগুলি ছাড়াও লেআউট এবং কাস্টম ভিউগুলিতে কাজ করে।
anoo_radha

1
@ মিশেলকর্ন হ্যাঁ, আপনি ঠিক বলেছেন, এটি প্রত্যেকের প্রয়োজন অনুসারে তাদের কোড অনুসারে।
পঙ্কজ লিলান

20

দেখা যাচ্ছে এটি উদ্দেশ্য হিসাবে কাজ করছে। স্ট্যান্ডার্ড থিমের থিম রঙ কনট্রোলহাইটলাইট মান #40ffffff। তাই একটি সাদা পটভূমিতে, এটি প্রদর্শিত হবে না। হাইলাইট রঙটি অন্য কোনও কিছুর কাছে পরিবর্তন করা এবং / অথবা অবজেক্টের পটভূমির রঙ পরিবর্তন করা।

সবাইকে ধন্যবাদ (বিশেষত অ্যালানভ আমাকে সঠিক দিকে নির্দেশ করার জন্য)।


যদি আমি অ্যান্ড্রয়েড ব্যবহার করি: ব্যাকগ্রাউন্ড = "? অ্যাট্র / সিলেটেবল আইটেমব্যাকগ্রাউন্ড" আমার ভিউতে আমি কীভাবে অবজেক্টের পটভূমি পরিবর্তন করতে পারি?
কোডস্ক্র্যাপ

1
কিছুই মনে করি না যে নির্বাচনযোগ্য আইটেমব্যাকগ্রাউন্ডের ডিফল্ট রাষ্ট্রটি স্বচ্ছ। সুতরাং, আমি এটির চেয়ে আমার পছন্দ মতো রঙ সেট করলাম।
কোডস্ক্র্যাপ

1
দ্রুত নোট: আপনি পরিবর্তন করতে পারেন colorControlHighlightআপনার styles.xml। উদাহরণস্বরূপ এটি আপনার কাস্টম থিমে যুক্ত করুন।
নুহমান


5

এটি রিপাল প্রভাব সহ একটি নমুনা বিন্যাসে ক্লিক করার জন্য একটি উদাহরণ:

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/selectableItemBackground"
    android:clickable="true"
    android:focusable="true"
    android:orientation="vertical">

এটি কতটা সহজ এবং এটি সহজ জাস্ট ওয়ার্কস fact এর সরল সত্য simple
মাচাডো

4
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="#cfd8dc"
    tools:targetApi="lollipop">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#d1c4e9" />
        </shape>
    </item>
</ripple>

এই রিপল.এক্সএমএলটিকে অঙ্কনযোগ্য ফোল্ডারে ব্যবহার করুন , তারপরে এটিকে ভিউ হিসাবে নির্ধারণ করুন

অ্যান্ড্রয়েড: পটভূমি = "@ অঙ্কনযোগ্য / লহরী"

অ্যান্ড্রয়েড যোগ্য = "সত্য"


2

এর সাথে কেবল ডিফল্ট রিপল ইফেক্ট যুক্ত করুন android:background="?selectableItemBackground"

ভালো লেগেছে:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:background="?selectableItemBackground"
            android:clickable="true"
            >

           ...

</LinearLayout>

0

এটি আপনার লেআউটে রাখুন:

android:clickable="true"
android:background="?attr/selectableItemBackground"

দ্রষ্টব্য: এপিআই ডকুমেন্টেশনে একটি বাগ রয়েছে। এটি কেবলমাত্র API> = 23 এ কাজ করবে

জন্য সব এপিআই মাত্রা এটি ব্যবহার সলিউশন


2
আপনার লিঙ্কটি এই একই পৃষ্ঠাটিকে পুনর্নির্দেশ করবে
টিএসআর

মনে রাখবেন আপনারও অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড = "? অ্যাট্রি / সিলেক্টেবল আইটেমব্যাকগ্রাউন্ডবর্ডারলেস" ব্যবহার করার বিকল্প রয়েছে, রিপ্লেলের প্রভাবটি প্যারেন্ট ভিউতে প্রসারিত হবে। এটি অনেক ক্ষেত্রে আরও ভাল দেখায়।
মাইকেল কর্ন

0

আমি এই সমস্ত উত্তরগুলির চেষ্টা করেছিলাম এবং কিছুই আমার পক্ষে কাজ করে না, তাই, আমি নীচের শৈলীটি তৈরি করে সমাধান করেছি:

<style name="Button.Borderless" parent="Base.Widget.AppCompat.Button.Borderless">
    <item name="android:minHeight">0dp</item>
    <item name="android:minWidth">0dp</item>
    <item name="android:layout_marginLeft">-6dp</item>
    <item name="android:layout_marginRight">-6dp</item>
    <item name="android:paddingTop">0dp</item>
    <item name="android:paddingBottom">0dp</item>
    <item name="android:paddingLeft">6dp</item>
    <item name="android:paddingRight">6dp</item>
</style>

এবং তারপরে, আমি আমার রৈখিক বিন্যাসে প্রয়োগ করেছি:

<LinearLayout
      android:id="@+id/ll_my_ripple"
      style="@style/Button.Borderless">
</LinearLayout>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.