আমি আশেপাশে অনুসন্ধান করেছি এবং এটি করার কোনও সঠিক উপায় আমি খুঁজে পাইনি। আমি আমার মতামতগুলিতে নিম্নলিখিত ছায়া প্রভাব রাখতে চাই:
সত্যি কথা বলতে কি, আমি জানি না যে এই দ্বিতীয়টি ছায়া প্রভাব প্রয়োগ করে করা হয়েছে কিনা। কোন ধারনা?
উত্তর:
আমি জানি এই প্রশ্ন থেকেই উত্তর করা হয়েছে কিন্তু আমি তোমাদের আমি দেখেছি যে একটি জানতে চাই drawable
উপর Android Studio
যে খুব ছবি আপনি প্রশ্ন আছে অনুরূপ: এই কটাক্ষপাত:
android:background="@drawable/abc_menu_dropdown_panel_holo_light"
দেখে মনে হচ্ছে:
আশা করি এটি সহায়ক হবে
সম্পাদনা করুন
উপরের বিকল্পটি পুরানো সংস্করণগুলির জন্য Android Studio
যাতে আপনি এটি নাও পেতে পারেন। আরও নতুন সংস্করণের জন্য:
android:background="@android:drawable/dialog_holo_light_frame"
তদুপরি, আপনি যদি নিজের কাস্টম শেপটি পেতে চান তবে আমি Photoshop
এটির মতো একটি অঙ্কন সফ্টওয়্যার ব্যবহার করার পরামর্শ দিই ।
এটিকে .9.png
ফাইল হিসাবে সংরক্ষণ করতে ভুলবেন না (উদাহরণ my_background.9.png
:)
ডকুমেন্টেশন পড়ুন: 9-প্যাচ আঁকুন
সম্পাদনা 2
এমনকি আরও ভাল এবং কম পরিশ্রমী সমাধান হ'ল সীমানাকে ওভারল্যাপ করার জন্য ভিউগুলি রোধ করতে একটি CardView
এবং সেট ব্যবহার করা app:cardPreventCornerOverlap="false"
:
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="2dp"
app:cardElevation="2dp"
app:cardPreventCornerOverlap="false"
app:contentPadding="0dp">
<!-- your layout stuff here -->
</android.support.v7.widget.CardView>
এছাড়াও build.gradle
, বর্তমানের মধ্যে সর্বশেষতম সংস্করণ অন্তর্ভুক্ত করেছেন তা নিশ্চিত করুন
compile 'com.android.support:cardview-v7:26.0.0'
/<sdk-path>/extras/android/support
।
cardView
আমি অ্যান্ড্রয়েড স্টুডিও 0.8.6 ব্যবহার করছি এবং আমি এটি খুঁজে পেলাম না:
android:background="@drawable/abc_menu_dropdown_panel_holo_light"
সুতরাং আমি এটি পরিবর্তে খুঁজে পেয়েছি:
android:background="@android:drawable/dialog_holo_light_frame"
এবং এটি এর মতো দেখাচ্ছে:
এর ব্যাকগ্রাউন্ড স্থাপন @android:drawable/dialog_holo_light_frame
, ছায়া দেয় তবে আপনি ব্যাকগ্রাউন্ডের রঙ বা সীমানার স্টাইল পরিবর্তন করতে পারবেন না, সুতরাং এটির ছায়া থেকে উপকৃত হওয়া আরও ভাল, তবুও স্তর-তালিকার মাধ্যমে একটি ব্যাকগ্রাউন্ড রাখতে সক্ষম হবেন
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--the shadow comes from here-->
<item
android:bottom="0dp"
android:drawable="@android:drawable/dialog_holo_light_frame"
android:left="0dp"
android:right="0dp"
android:top="0dp">
</item>
<item
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp">
<!--whatever you want in the background, here i preferred solid white -->
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
</shape>
</item>
</layer-list>
বলার মতো এটি আঁকতে সক্ষম ফোল্ডারে সংরক্ষণ করুন shadow.xml
এটি একটি ভিউতে নির্ধারণ করতে, এক্সএমএল লেআউট ফাইলটিতে এর ব্যাকগ্রাউন্ড সেট করে
android:background="@drawable/shadow"
নিম্নলিখিত কোড সহ পুনরায় / অঙ্কনযোগ্য ফোল্ডারে কার্ড_ব্যাকগ্রাউন্ড.এক্সএমএল তৈরি করুন:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#BDBDBD"/>
<corners android:radius="5dp"/>
</shape>
</item>
<item
android:left="0dp"
android:right="0dp"
android:top="0dp"
android:bottom="2dp">
<shape android:shape="rectangle">
<solid android:color="#ffffff"/>
<corners android:radius="5dp"/>
</shape>
</item>
</layer-list>
তারপরে আপনি যে উপাদানটিতে কার্ডের বিন্যাস চান সেটিতে নীচের কোডটি যুক্ত করুন
android:background="@drawable/card_background"
নিম্নলিখিত লাইন কার্ডের জন্য ছায়ার রঙ নির্ধারণ করে
<solid android:color="#BDBDBD"/>
কার্ডভিউ আপনাকে অ্যান্ড্রয়েড 5+ এ সত্য ছায়া দেয় এবং এটিতে একটি সমর্থন লাইব্রেরি রয়েছে। এটির সাথে আপনার দৃষ্টিভঙ্গিটি কেবল জড়িয়ে দিন এবং আপনি শেষ করেছেন।
<android.support.v7.widget.CardView>
<MyLayout>
</android.support.v7.widget.CardView>
এটি পরবর্তী নির্ভরতা প্রয়োজন।
dependencies {
...
compile 'com.android.support:cardview-v7:21.0.+'
}
CardView
কমপ্যাট মোডে বিভিন্ন উচ্চতার জন্য কেবল ছায়ার স্তরও বিভিন্ন।
প্রভাব ছায়া অর্জন করতে উন্নত সম্পত্তি ব্যবহার করুন:
<View ...
android:elevation="2dp"/>
এটি কেবলমাত্র গত v21 ব্যবহার করা হয়, এই লিঙ্কটি যাচাই করুন: http://developer.android.com/training/material/shadows-clipping.html
এটি দেরিতে হতে পারে তবে যারা এখনও এর উত্তর খুঁজছেন তাদের জন্য আমি গিট হাবের জন্য একটি প্রকল্প পেয়েছি এবং এটি কেবলমাত্র আমার প্রয়োজনের সাথে খাপ খায়। অ্যান্ড্রয়েড-মেটালশডাউনাইনপ্যাচ
আপনার বিল্ডড্রেডল নির্ভরতাতে এই লাইনটি কেবল যুক্ত করুন
compile 'com.h6ah4i.android.materialshadowninepatch:materialshadowninepatch:0.6.3'
চিয়ার্স থাম্বস অব স্রষ্টার! হ্যাপি কোডিংস
আমি জানি এটি নির্বুদ্ধিতা হ্যাকি,
তবে আপনি যদি ভি 21 এর অধীনে সমর্থন করতে চান তবে আমার অর্জনগুলি এখানে।
আয়তক্ষেত্র_সহ_০ ডিপি_রাডিয়াস_ সাদা_বিজি_আর_শাদো.এক্সএমএল
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Shadow layers -->
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_1" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_2" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_3" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_4" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_5" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_6" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_7" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_8" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_9" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="3dp">
<shape>
<corners android:radius="10dp" />
<padding
android:bottom="1.8dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="@color/shadow_hack_level_10" />
</shape>
</item>
<!-- Background layer -->
<item>
<shape>
<solid android:color="@android:color/white" />
<corners android:radius="10dp" />
</shape>
</item>
</layer-list>
আয়তক্ষেত্র_সহ_০ ডিপি_রাডিয়াস_ হোয়াইট_বিজি_এন্ড_শাদো.এক্সএমএল (ভি 21)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="10dp" />
</shape>
ভিউ_ ইনকামিং.এক্সএমএল
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/rectangle_with_10dp_radius_white_bg_and_shadow"
android:elevation="7dp"
android:gravity="center"
android:minWidth="240dp"
android:minHeight="240dp"
android:orientation="horizontal"
android:padding="16dp"
tools:targetApi="lollipop">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Hello World !" />
</LinearLayout>
ফলাফল এখানে:
ভি 21 এর অধীনে (এটি যা আপনি এক্সএমএল দিয়ে তৈরি করেছেন)
ভি 21 এর উপরে (বাস্তব উচ্চতা উপস্থাপনা)
আপনি যদি যথাযথভাবে প্রয়োগ করতে ছায়াগুলির প্রয়োজন হয় তবে আপনাকে নিম্নলিখিতগুলি করতে হবে।
এই দৃশ্যটি বিবেচনা করুন, একটি পটভূমি অঙ্কনযোগ্য দ্বারা সংজ্ঞায়িত:
<TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" />
পটভূমি অঙ্কনযোগ্য গোলাকার কোণগুলির সাথে একটি আয়তক্ষেত্র হিসাবে সংজ্ঞায়িত:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#42000000" />
<corners android:radius="5dp" />
</shape>
ছায়াগুলি প্রয়োগের এটি পুনরায় সংস্থাপিত উপায় এটি চেক আউট https://developer.android.com/training/matory/shadows-clipping.html# শ্যাডো দেখুন
প্রভাব ছায়া জন্য উন্নত সম্পত্তি ব্যবহার করুন:
<YourView
...
android:elevation="3dp"/>
বৃত্তাকার ছায়া দেখানোর জন্য পটভূমির মতো অঙ্কনযোগ্য তৈরি করুন।
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Drop Shadow Stack -->
<item>
<shape>
<corners android:radius="4dp" />
<padding android:bottom="1dp" android:left="1dp"
android:right="1dp" android:top="1dp" />
<solid android:color="#00CCCCCC" />
</shape>
</item>
<item>
<shape>
<corners android:radius="4dp" />
<padding android:bottom="1dp" android:left="1dp"
android:right="1dp" android:top="1dp" />
<solid android:color="#10CCCCCC" />
</shape>
</item>
<item>
<shape>
<corners android:radius="4dp" />
<padding android:bottom="1dp" android:left="1dp"
android:right="1dp" android:top="1dp" />
<solid android:color="#20d5d5d5" />
</shape>
</item>
<item>
<shape>
<corners android:radius="6dp" />
<padding android:bottom="1dp" android:left="1dp"
android:right="1dp" android:top="1dp" />
<solid android:color="#30cbcbcb" />
</shape>
</item>
<item>
<shape>
<corners android:radius="4dp" />
<padding android:bottom="1dp" android:left="1dp"
android:right="1dp" android:top="1dp" />
<solid android:color="#50bababa" />
</shape>
</item>
<!-- Background -->
<item>
<shape>
<solid android:color="@color/gray_100" />
<corners android:radius="4dp" />
</shape>
</item>
</layer-list>
এই প্রশ্নটি পুরানো হতে পারে তবে ভবিষ্যতে যে কেউ জটিল ছায়ার প্রভাব অর্জনের জন্য সহজ উপায় চান আমার লাইব্রেরিটি এখানে দেখুন https://github.com/BluRe-CN/ComplexView
লাইব্রেরিটি ব্যবহার করে, আপনি ছায়ার রঙ পরিবর্তন করতে পারেন, প্রান্তগুলি আরও ভাল করতে পারেন এবং আরও অনেক কিছু। আপনি যা খুঁজছেন তা অর্জন করার জন্য এখানে একটি উদাহরণ দেওয়া আছে।
<com.blure.complexview.ComplexView
android:layout_width="400dp"
android:layout_height="600dp"
app:radius="10dp"
app:shadow="true"
app:shadowSpread="2">
<com.blure.complexview.ComplexView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:color="#fdfcfc"
app:radius="10dp" />
</com.blure.complexview.ComplexView>
ছায়ার রঙ পরিবর্তন করতে, অ্যাপ্লিকেশনটি ব্যবহার করুন: ছায়া রঙ = "আপনার রঙের কোড"।
এই আকারটি পটভূমি হিসাবে ব্যবহার করুন:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:drawable/dialog_holo_light_frame"/>
<item>
<shape android:shape="rectangle">
<corners android:radius="1dp" />
<solid android:color="@color/gray_200" />
</shape>
</item>
</layer-list>