android - সমর্থন লাইব্রেরি ভেক্টর ড্র্যায়েবল রিসোর্সস $ নটফাউন্ডএক্সেপশন




android-support-library androiddesignsupport (9)

আমি ডিজাইন সমর্থন লাইব্রেরি সংস্করণ 23.4.0 ব্যবহার করছি। আমি গ্রেডের পতাকাটি সক্ষম করেছি:

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

আমি বিল্ড সরঞ্জামগুলির সংস্করণ 23.0.2 ব্যবহার করছি, তবে এখনও, আমি কিটক্যাট বা তার চেয়ে কম Resources$NotFoundException

যখন আমি android:drawableLeft ব্যবহার করি তখন এটি ঘটে থাকে android:drawableLeft imageView.setImageResource(R.drawable.drawable_image) বা imageView.setImageResource(R.drawable.drawable_image)imageView.setImageResource(R.drawable.drawable_image)

এবং হ্যাঁ, আমি যেখানে প্রতিটি অঙ্কনযোগ্য ব্যবহার করছি সেখানে প্রতিটি ক্রিয়াকলাপটি আমি এটিকে রাখছি

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

এটি কি সমর্থন লাইব্রেরির বাগ?


আপনার ভেক্টরগুলিকে drawable-anydpi , পুরানো ডিভাইসগুলি এটি সমর্থন করে না

তাদের drawable


আমাদের একই সমস্যা ছিল। কিটকেটে ভেক্টর ড্রয়াবলগুলি দৃশ্যমান ছিল না। আমি AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); যোগ করে এই সমস্যাটি সমাধান করেছি AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); ক্রিয়াকলাপের onCreate পদ্ধতিতে।

এর আগে যুক্ত করতে ভুলবেন না:

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

এবং আপনি ভেক্টরকে ছবি আঁকতে ব্যবহার করতে পারেন সেই দৃশ্যের জন্য সেট ইমেজআরসোর্স কল করুন। আমার দর্শনটি ইমেজবটন। আমার কাছে Android SDK বিল্ড সরঞ্জামগুলির সংস্করণ 23.0.3 রয়েছে


আমার বিশেষ ক্ষেত্রে, আমার এই সমস্যাটি ছিল কারণ আমি নির্বাচিত একাধিক ভেক্টর সহ চিত্রের সংস্থান হিসাবে একটি অঙ্কনযোগ্য নির্বাচককে ব্যবহার করছিলাম, যেমন:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@drawable/vector_select_blue"/>
    <item android:state_pressed="true" android:drawable="@drawable/vector_select_black"/>
    .
    .
    etc
</selector>

হ্যাঁ, বেশ খারাপ, কিন্তু সে সময়টি আরও ভাল করে জানতেন না।

সুতরাং, এটি করার সঠিক উপায়টি হ'ল আপনার ভেক্টর ফাইলে রঙিন সম্পত্তিটি ব্যবহার করে:

<vector ..vector properties..
        android:tint="@color/vector_color_selector">
              <path ..path properties../>
</vector>

(আপনি অ্যাপ্লিকেশনটিও ব্যবহার করতে পারেন: অ্যাপকম্প্যাটআইজেজভিউতে রঙিন বৈশিষ্ট্য)

এবং এখন, আপনার ভেক্টর_ রঙ_এলেক্টর ফাইলটিতে আপনার পছন্দ মতো রঙ থাকা উচিত:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="@color/blue"/>
    <item android:state_pressed="true" android:color="@color/black"/>
    .
    .
    etc
</selector>

আমি আশা করি পূর্বের উত্তরগুলি আপনার পক্ষে কাজ না করলে এটি কাউকে সহায়তা করে helps সুস্পষ্ট উল্লেখ করে, তবে আমি অবশ্যই বলব যে আপনার এখনও ভেক্টরড্রাব্বেবলস ইউজসপোর্টলিবারি = গ্রেডে সত্য স্থাপন করতে হবে, অ্যাপকম্প্যাটআইজাজভিউটি ব্যবহার করুন এবং অ্যাপ্লিকেশনটি ব্যবহার করুন: srcCompat বা setImageDrawable + AppCompatResferences.getDrawable ভেক্টর কমপ্যাট লাইব্রেরির সাথে কোনও ঝামেলা এড়াতে।


এখানে কয়েকটি উত্তরের পরিপূরক হিসাবে: ভেক্টরড্রেবেবলের জন্য পশ্চাদপটে সামঞ্জস্যপূর্ণ সমর্থন একটি দাম নিয়ে আসে এবং সব ক্ষেত্রে কার্যকর হয় না

কোন ক্ষেত্রে এটি কাজ করে? আমি সাহায্য করার জন্য এই চিত্রটি তৈরি করেছি (সমর্থন লাইব্রেরির জন্য 23.4.0 থেকে কমপক্ষে 25.1.0 অবধি কার্যকর) .1


পার্টিতে দেরি হওয়ার জন্য দুঃখিত তবে এই উত্তরটি এমন ব্যবহারকারীদের সাহায্য করতে পারে যারা ফ্ল্যাশ অ্যাপকম্প্যাটডেলিগেট.সেট কমপ্যাটভেেক্টরফ্রান্স রিসোর্সেসনেবল (সত্য) সক্ষম করতে চান ; সমস্ত কার্যক্রমের জন্য।

1. অ্যাপ্লিকেশন (android.app.Application) পর্যন্ত প্রসারিত একটি ক্লাস তৈরি করুন

public class MyApplicationClass extends Application
{
    @Override
    public void onCreate()
    {
        super.onCreate();
    }
}

2. ম্যানিফেস্ট.এক্সএমএল এ যান এবং আপনার ট্যাগটিতে নিম্নলিখিত লাইনটি যুক্ত করুন

<application
    android:name=".MyApplicationClass"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    ...
</application>

৩.পরে নিচের কোডটি মাই অ্যাপ্লিকেশনক্লাস.জভাতে যুক্ত করুন

// This flag should be set to true to enable VectorDrawable support for API < 21
static
{
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

মাই অ্যাপ্লিকেশনক্লাস.জভা এর জন্য সম্পূর্ণ কোড

import android.app.Application;
import android.support.v7.app.AppCompatDelegate;

/**
* Created by Gaurav Lonkar on 23-Dec-17.
*/

public class MyApplicationClass extends Application
{
    // This flag should be set to true to enable VectorDrawable support for API < 21
    static
    {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }

    @Override
    public void onCreate()
    {
        super.onCreate();
    }
}

ব্যবহার করার চেষ্টা করুন:

imageView.setImageDrawable(VectorDrawableCompat.create(getResources(), drawableRes, null));

আপনাকে AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); যুক্ত করতে হবে না AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); এই পথে.

কেবল ভেক্টরড্রেভিয়েবল কমপ্যাট ব্যবহার করে আপনার ভেক্টর ড্রয়াবলগুলি স্ফীত করুন এবং আপনি প্রস্তুত।


সমর্থন লাইব্রেরি 23.4.0 ব্যবহার করে এটি কাজ করতে আমার কাছে এটি পেতে 3 টি পৃথক জিনিস লাগে:

  1. এটি build.gradle এ যুক্ত করুন

    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
  2. আপনার অ্যাপ্লিকেশন ক্লাসের onCreate এ নিম্নলিখিতগুলি যুক্ত করুন

    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
  3. সমস্ত এক্সএমএল দর্শনগুলির জন্য যেখানে আপনি ভেক্টর অঙ্কনযোগ্য প্রতিস্থাপন সেট করছেন

    android:src

    সঙ্গে

    app:srcCompat

    এবং কোডে এটি প্রতিস্থাপন করুন:

    imageView.setImageResource(...);

    সঙ্গে

    imageView.setImageDrawable(...);


অঙ্কনযোগ্য স্ফীত করা হচ্ছে

এই সমর্থন লাইব্রেরিতে `VectorDrawable` এবং `VectorDrawable` `AnimatedVectorDrawable` `VectorDrawable` পারে:

  • স্থিতিশীল getDrawable() পদ্ধতি কলিং:
//This will only inflate a drawable with <vector> as the root element
VectorDrawable.getDrawable(context, R.drawable.ic_arrow_vector);

//This will only inflate a drawable with <animated-vector> as the root element
AnimatedVectorDrawable.getDrawable(context, R.drawable.ic_arrow_to_menu_animated_vector);

// This will inflate any drawable and will auto-fallback to the lollipop implementation on api 21+ devices
ResourcesCompat.getDrawable(context, R.drawable.any_drawable);

যদি জাভা কোডে অঙ্কনযোগ্যকে উত্সাহিত করা হয় তবে এটি সর্বদা রিসোর্সস কমপ্যাট.জেটড্রেবল ResourcesCompat.getDrawable() ব্যবহার করার পরামর্শ দেওয়া হয় কারণ এটি প্রযোজ্য ক্ষেত্রে ললিপপ ফ্যালব্যাক পরিচালনা করে। এটি সিস্টেমে অঙ্কনযোগ্য কনস্ট্যান্টস্টেট ক্যাশে সক্ষম করে এবং তাই আরও কার্যকর।
লাইব্রেরিতে নিম্নলিখিত মোর্ফ (দ্বি-দিকনির্দেশক) অ্যানিমেশন রয়েছে:

  • খেলুন-বিরতি মোর্ফ অ্যানিমেশন
  • প্লে-স্টপ মোর্ফ অ্যানিমেশন
  • তীর-হামবুর্গ মেনু মোর্ফ অ্যানিমেশন

  • আপনি দেখতে পাচ্ছেন, আমি আমার API 16 ফোনে উপরের চিত্রটি তৈরি করেছি:

    import com.wnafee.vector.compat.AnimatedVectorDrawable;
    mdrawable = (AnimatedVectorDrawable) AnimatedVectorDrawable.getDrawable(this.getApplicationContext(), R.drawable.consolidated_animated_vector);

    vector-compat কম্পাটের জন্য গিথুব README এখানে দেখুন: https://github.com/wnafee/vector-compat
    আপনি আপনার অ্যাপ্লিকেশন মডিউলের build.gradle dependencies (সাধারণত ফাইলের শেষে) সাথে এটি মার্জ করলে এটি আপনার সমস্যার ( API 14 নিচে) সংশোধন করবে:

    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //Trying to FIX Binary XML file line #2: invalid drawable tag animated-vector
        compile 'com.android.support:appcompat-v7:25.0.0'
        compile 'com.android.support:design:25.0.0'
    //not needed
    //  compile 'com.android.support:support-vector-drawable:25.0.0'
        compile 'com.wnafee:vector-compat:1.0.5'//*******holy grail *******https://github.com/wnafee/vector-compat
    //  Failed to resolve: com.android.support:support-animated-vector-drawable:25.0.0
    //not needed
    //  compile 'com.android.support:support-animated-vector-drawable:25.0.0'
    }

    defaultConfig {
      vectorDrawables.useSupportLibrary = true
    }

    এটি app.gradle এ ব্যবহার করুন

    তারপরে AppCompatDrawableManager সেটড্র্যাবেল এবং গেটড্রাব্যাবল AppCompatDrawableManager করতে ব্যবহার করুন। আমার জন্য কাজ কর





    android-vectordrawable