অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড ব্যান্ড দেখতে দেখতে লিনিয়ার গ্রেডিয়েন্ট ব্যবহার করা


85

আমি আমার তালিকাভিউতে একটি রৈখিক গ্রেডিয়েন্ট প্রয়োগ করার চেষ্টা করছি। এটি আমার অঙ্কনযোগ্য এক্সএমএল এর সামগ্রী:

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient 
        android:startColor="#3A3C39" 
        android:endColor="#181818"
        android:angle="270"
     />
    <corners android:radius="0dp" />
</shape>

সুতরাং আমি এটিকে আমার তালিকাভিউয়ের সাথে এটি প্রয়োগ করি:

android:background="@drawable/shape_background_grey"

এটি কাজ করে তবে এটি এমুলেটর এবং একটি বাস্তব ডিভাইসে খুব "ব্যান্ডেড" দেখায়।

এই "আচরণ" হ্রাস করার কোন উপায় আছে কি?


18
কেবলমাত্র একটি আপডেট: getWindow () set সেটফর্ম্যাট (পিক্সেলফর্ম্যাট Rআরজিবিএ_৮৮৮৮) যুক্ত করা; getWindow ()। addFlags (উইন্ডো ম্যানেজ। লেআউটপ্যারামস.এফএলএজি_ডিটর); অনক্রিট পদ্ধতিতে মনে হয় আমোলেড স্ক্রিনের সাথে এইচডিপিআইয়ের জন্য কৌতুকটিও আছে (এন 1 / ডিজায়ার)
— ফ্রান্সেস্কো লরিটা

4
@Francescoদুর্দান্ত! এটি অ্যান্ড্রয়েড 2.2 এর সাথে আমার গ্যালাক্সি এস এ সহায়তা করেছে । আপনার দরকারী মন্তব্য একটি উত্তরে রূপান্তর করুন, যাতে লোকেরা এটির জন্য ভোট দিতে পারে।
— java.is.for.desktop

উত্তর:


84

রোমেন গাইয়ের পরামর্শ অনুসারে:

listView.getBackground().setDither(true);

আমার সমস্যা সমাধান করে

বিশেষত AMOLED এবং / অথবা এইচডিপিআই ডিভাইসগুলির জন্য এটি যদি যথেষ্ট না হয় তবে:

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    Window window = getWindow();
    window.setFormat(PixelFormat.RGBA_8888);
}

এটি অ্যান্ড্রয়েড ১.6 এবং তারপরের উপর কাজ করে না। আমার অন্যান্য মন্তব্য দেখুন
— ফ্রান্সেস্কো লরিটা

@ আর্টেম আমার ক্ষেত্রে, অ্যান্ড্রয়েড> = 1.6 স্বতঃস্ফূর্ত listView.getBackground().setDither(true);কাজ না করে আমাকে এই onAttachedToWindowপদ্ধতিটি ওভাররাইড করতে হয়েছিল ।
— ফ্রান্সেস্কো লরিটা

4
সেটডেথার () এখন অবচয় করা হয়েছে
— গিলারমো

39

আপনি কেবল আপনার অঙ্কনযোগ্য অবজেক্টে দমিয়ে রাখা সক্ষম করতে পারেন।


4
হ্যাঁ এটা কাজ করে! অনেক অনেক। বিটিডাব্লু আমি এই সম্পত্তিটি অঙ্কনযোগ্য এক্সএমএল সংজ্ঞায় ব্যবহার করার চেষ্টা করেছি তবে নথিতে আরও ভালভাবে পড়তে পারলে এই সম্পত্তিটি কেবল নির্বাচক উপাদানটির জন্যই সমর্থিত।
— ফ্রান্সেসকো লরিটা

দুর্ভাগ্যক্রমে এটি অ্যান্ড্রয়েড সংস্করণ> 1.5 এ কাজ করে না। আমি অ্যান্ড্রয়েড 1.6 এবং অ্যান্ড্রয়েড 1.5 দিয়ে রিয়েল ডিভাইসে পরীক্ষা করেছি। আমার অঙ্কনীয় গ্রেডিয়েন্টে কোনও কাজ যোগ করা কাজ করে না। ডিভাইসগুলি উভয়ই 320 x 480 (180 পিপিআই)। যেকোনো পরামর্শ? Tnx
— ফ্রান্সেস্কো

4
setDither()23 এপিআই স্তরে অবহেলিত ছিল This এই সম্পত্তিটি এখন উপেক্ষা করা হবে।
— টট জ্যাম

9

এটি আপনার ক্রিয়াকলাপে রাখুন:

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    Window window = getWindow();
    window.setFormat(PixelFormat.RGBA_8888);
}

3

আমার জন্য এইচটিসি ডিজায়ার এ জাতীয় কাজ করে

window.getDecorView().getBackground().setDither(true);

4
setDither()23 এপিআই স্তরে অবহেলিত ছিল This এই সম্পত্তিটি এখন উপেক্ষা করা হবে।
— টট জ্যাম

2

আমার জন্য যখন আমি অ্যান্ড্রয়েড সেট করি তখন ব্যান্ডিং অদৃশ্য হয়ে যায়: গ্রেডিয়েন্টে: গ্রেডিয়েন্ট_ডार्क.এক্সএমএল - ব্যবহারের লেভেল = "সত্য"

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#464646"
        android:endColor="#323232"
        android:angle="270"
        android:type="linear"
        android:useLevel="true"
         />
</shape>

তবে প্রথমে আমি ব্যান্ডিংটি সরাতে "শোরগোল" আঁকতে সক্ষম একটি স্তর-তালিকা ব্যবহার করার চেষ্টা করেছি, এটি সাহায্য করে তবে এখনও কিছু ব্যান্ডিং রয়েছে।

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/gradient_dark"/>
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/noise_repeater"
            android:tileMode="repeat" />
    </item>

</layer-list>

"নয়েজ_আরকটি" অঙ্কনযোগ্য আমি তৈরি এবং ব্যবহার করেছি

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


2

যদি কোনও ফোনে আরজিবিএ_৮৮৮ সেটিংটি সহায়তা না করে তবে হার্ডওয়্যার ত্বরণকে অক্ষম layerTypeকরার জন্য সমাধানটি উপাদানটি সেট করা যেতে পারে softwarethe

android:layerType="software"

এটি আমার সমস্যাটি একটি স্যামসাং এস 5 ফোনে স্থির করেছে।


0

আমার পক্ষে যে কাজটি হয়েছিল তা হ'ল স্টার্টকালার এবং এন্ড কালার উভয়কেই একটি স্বচ্ছ স্বচ্ছ আলফা চ্যানেল সেট করা।

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient 
        android:startColor="#FE3A3C39" 
        android:endColor="#FE181818"
        android:angle="270"
     />
</shape>

আমি এই অন্যান্য এসও প্রশ্ন থেকে এটি চেষ্টা করার ধারণা পেয়েছি: অ্যান্ড্রয়েড: ডিটার = "সত্য" দূরে নেই, কী সমস্যা?

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