সর্বশেষ আপডেট - জুন / 2019
আসল উত্তর থেকে সাপোর্ট লাইব্রেরি কিছুটা পরিবর্তন হয়েছে। এখন, এমনকি গ্র্যাডলের জন্য অ্যান্ড্রয়েড প্লাগইন নির্মাণের সময় স্বয়ংক্রিয়ভাবে পিএনজি উত্পন্ন করতে সক্ষম। সুতরাং, নীচে দুটি নতুন পদ্ধতি যা এই দিনগুলিতে কাজ করা উচিত are আপনি এখানে আরও তথ্য পেতে পারেন :
পিএনজি জেনারেশন
গ্রেডল বিল্ড সময় আপনার সম্পদ থেকে স্বয়ংক্রিয়ভাবে পিএনজি চিত্র তৈরি করতে পারে। তবে এই পদ্ধতির ক্ষেত্রে সমস্ত এক্সএমএল উপাদান সমর্থন করে না । এই সমাধানটি সুবিধাজনক কারণ আপনার কোড বা আপনার বিল্ডড্রেডলে কোনও পরিবর্তন করার দরকার নেই। কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনি অ্যান্ড্রয়েড প্লাগইন 1.5.0 বা তার বেশি এবং অ্যান্ড্রয়েড স্টুডিও 2.2 বা ততোধিক ব্যবহার করছেন ।
আমি এই অ্যাপ্লিকেশনটিতে এই সমাধানটি ব্যবহার করছি এবং ভাল কাজ করে। কোনও অতিরিক্ত বিল্ড . gradle পতাকা প্রয়োজন। কোন হ্যাক প্রয়োজন। আপনি যদি / বিল্ড / জেনারেট / রেজ / পিএনজি / তে যান ... আপনি সমস্ত উত্পন্ন পিএনজি দেখতে পাবেন can
সুতরাং, আপনার যদি কিছু সাধারণ আইকন থাকে (যেহেতু সমস্ত এক্সএমএল উপাদানগুলি সমর্থিত নয়), এই সমাধানটি আপনার পক্ষে কাজ করতে পারে। গ্রেডলের জন্য কেবল আপনার অ্যান্ড্রয়েড স্টুডিও এবং আপনার অ্যান্ড্রয়েড প্লাগইন আপডেট করুন।
সমর্থন লাইব্রেরি
সম্ভবত, এটি সেই সমাধান যা আপনার পক্ষে কাজ করবে। আপনি যদি এখানে এসে থাকেন তবে এর অর্থ আপনার অ্যান্ড্রয়েড স্টুডিওগুলি স্বয়ংক্রিয়ভাবে পিএনজি তৈরি করছে না। সুতরাং, আপনার অ্যাপ্লিকেশন ক্রাশ হচ্ছে।
অথবা হতে পারে, আপনি চান না যে অ্যান্ড্রয়েড স্টুডিও মোটেই কোনও পিএনজি উত্পন্ন করতে পারে।
এক্সএমএল উপাদানটির একটি উপসেট সমর্থন করে এমন "অটো-পিএনজি প্রজন্ম" থেকে আলাদা, এই সমাধানটি সমস্ত এক্সএমএল ট্যাগকে সমর্থন করে। সুতরাং, আপনার ভেক্টর আঁকতে সম্পূর্ণ সমর্থন have
এটি সমর্থন করার জন্য আপনাকে অবশ্যই প্রথমে আপনার বিল্ড.gradle আপডেট করতে হবে:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:23.2.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
}
এবং তারপরে, লোড করার সময় app:srcCompat
পরিবর্তে ব্যবহার করুন । এটা ভুলে যাবেন নাandroid:src
VectorDrawables
আপনি TextView
যদি androidx
সমর্থন লাইব্রেরির সংস্করণ ব্যবহার করে থাকেন তবে আপনি app:drawableLeftCompat
পরিবর্তে (বা ডানদিকে, উপরে, নীচে) ব্যবহার করতে পারেনapp:drawableLeft
CheckBox
/ এর ক্ষেত্রে এর পরিবর্তে RadioButton
ব্যবহার app:buttonCompat
করুন android:button
।
আপনি যদি androidx
সাপোর্ট লাইব্রেরির সংস্করণটি ব্যবহার না করে থাকেন এবং আপনার minSdkVersion
হয় 17
বা তার বেশি বা একটি বোতাম ব্যবহার করছেন না তবে আপনি প্রোগ্রামের মাধ্যমে সেট করার চেষ্টা করতে পারেন
Drawable icon = AppCompatResources.getDrawable(context, <drawable_id>);
textView.setCompoundDrawablesWithIntrinsicBounds(<leftIcon>,<topIcon>,<rightIcon>,<bottomIcon>);
আপডেট - জুলাই / 2016
তারা সেই ভেক্টর ড্র্যাবলকে অ্যান্ড্রয়েড সমর্থন লাইব্রেরিতে 23.4.0 এ পুনরায় সক্ষম
করেছে
অ্যাপকোম্প্যাট ব্যবহারকারীদের জন্য , আমরা অ্যাপকোম্প্যাটডেলিগেট.সেটকম্প্যাটভিেক্টরক্রমে রিসোর্সেসনেবল (সত্য) এর মাধ্যমে রিসোর্সগুলি (23.2-এ পাওয়া আচরণ) থেকে ভেক্টর ড্রয়বলদের পুনরায় সক্ষম করার জন্য একটি অপ্ট-ইন এপিআই যুক্ত করেছি - মনে রাখবেন যে এটি মেমরির ব্যবহারের সাথে সমস্যাগুলির কারণ হতে পারে এবং কনফিগারেশন উদাহরণগুলি আপডেট করতে সমস্যা, সুতরাং এটি কেন ডিফল্টরূপে অক্ষম।
হতে পারে , build.gradle
সেটিংস এখন অপ্রচলিত এবং আপনার কেবল এটি যথাযথ ক্রিয়াকলাপগুলিতে সক্ষম করা প্রয়োজন (তবে, এটি পরীক্ষা করা প্রয়োজন)।
এখন, এটি সক্ষম করতে, আপনার অবশ্যই করতে হবে:
public class MainActivity extends AppCompatActivity {
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
...
}
আসল উত্তর - এপ্রিল / ২০১।
আমি মনে করি এটি ঘটছে কারণ সাপোর্ট ভেক্টর সর্বশেষতম পাঠাগার সংস্করণে অক্ষম ছিল: 23.3.0
এই পোস্টের মতে :
অ্যাপকম্প্যাট ব্যবহারকারীদের জন্য, আমরা কার্যকারিতাটি সরিয়ে নেওয়ার সিদ্ধান্ত নিয়েছি যা সংস্করণ ২৩.২.০ / ২৩.২.১ (ISSUE 205236) এ প্রয়োগের ক্ষেত্রে পাওয়া সমস্যার কারণে প্রাক-লোলিপপ ডিভাইসে সংস্থান থেকে ভেক্টর ড্রয়াবল ব্যবহার করতে দেয় । অ্যাপ্লিকেশন ব্যবহার করে: srcCompat এবং setImageResource () কাজ চালিয়ে যাচ্ছে।
আপনি যদি সমস্যা 205236 ইস্যুটি দেখে যান তবে মনে হয় তারা ভবিষ্যতে সক্ষম করবে তবে মেমরির সমস্যাটি শীঘ্রই ঠিক করা হবে না:
পরবর্তী প্রকাশে আমি একটি অপ্ট-ইন এপিআই যুক্ত করেছি যেখানে আপনি সরিয়ে নেওয়া ভেক্টরড্রেবল সমর্থনটিকে পুনরায় সক্ষম করতে পারবেন। এটি আগের মতো একই ক্যাভেটসের সাথে আসে (মেমরির ব্যবহার এবং কনফিগারেশন আপডেট করার ক্ষেত্রে সমস্যা)।
আমারও একি দশা. সুতরাং, আমার ক্ষেত্রে, আমি সমস্ত আইকনগুলিকে পুনরায় ফিরিয়ে দিয়েছি যা পুনরায় সংস্থান থেকে পিএনজি চিত্রগুলিতে ভেক্টর ড্রয়িং ব্যবহার করে (যেহেতু মেমরির সমস্যাটি এটি আবার সক্ষম করার জন্য একটি বিকল্প সরবরাহ করার পরেও ঘটবে)।
আমি নিশ্চিত নই যে এটি সর্বোত্তম বিকল্প কিনা, তবে এটি আমার মতে সমস্ত ক্র্যাশ সংশোধন করে।