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


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.