অ্যাপ্লিকেশন: srcCompat এবং অ্যান্ড্রয়েডের মধ্যে পার্থক্য: অ্যান্ড্রয়েডের লেআউট XML এ src


138

আমি যখনই অ্যান্ড্রয়েড স্টুডিওর ভেক্টর সম্পদগুলি ব্যবহার করে আইকন যুক্ত করে একটি চিত্র ভিউ তৈরি করি তখনই আমি লাইনে একটি ত্রুটি পেয়ে যাচ্ছি app:srcCompat="@drawable/ic_play"

আমি যখন এর app:srcCompatসাথে পরিবর্তন করি তখন android:srcত্রুটিটি চলে যায় তবে আইকনটি পিক্সেলিটেড দেখায়।

এর মধ্যে প্রধান পার্থক্য কী

app:srcCompat="@drawable/ic_play"

এবং

android:src="@drawable/ic_play"

উত্তর:


139

অ্যাপ: srcCompat

আপনার অ্যাপে ভেক্টর ড্রয়াবলকে একীভূত করার সবচেয়ে বুদ্ধিমান পদ্ধতি V ভেক্টর ড্রয়েবলগুলি আপনাকে এক্সএমএলে সংজ্ঞায়িত একক ভেক্টর গ্রাফিকের সাথে একাধিক পিএনজি সম্পদ প্রতিস্থাপনের অনুমতি দেয়। এর আগে ললিপপ এবং উচ্চতর ডিভাইসগুলিতে সীমাবদ্ধ ছিল

বিঃদ্রঃ

এর হিসাবে অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরী 23.3.0 , সমর্থন ভেক্টর অঙ্কনযোগ্য শুধুমাত্র মাধ্যমে লোড করা যাবে app:srcCompat

আপনাকে ভেক্টরড্রেবয়েবলস.উসসপোর্টপোর্ট লাইবারি = আপনার build.gradleফাইলের সাথে যুক্ত করতে হবে

    // Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  

অ্যান্ড্রয়েড: SRC

এই চিত্রকল্পের সামগ্রী হিসাবে একটি অঙ্কনযোগ্য সেট করে t এটির মূল আকারে এটি প্রদর্শিত হবে। কোনও স্বয়ংক্রিয় স্কেলিং নেই।


2
অ্যাপ্লিকেশনটির সাথে ত্রুটি: srcCompact চলে গেছে যখন ভেক্টরড্রেবলগুলি যোগ করা হয় whenউপসপোর্টলিবারি = গ্রেড অ্যাপ অ্যাপ্লিকেশন মডিউলে সত্য
জায়েদ মোহাম্মদ

3
অ্যাপ্লিকেশন: পুরানো অ্যান্ড্রয়েড সংস্করণগুলির সাথে srcCompat বিরোধ? আরও উল্লেখযোগ্যভাবে এপিআই 19 হ'ল আমি প্রাচীনতম সংস্করণ হিসাবে উল্লেখ করছি।
সমকক্ষ

বাহ শেষ পর্যন্ত বিটম্যাপ আইকন থেকে মুক্তি পেতে পারে।
মেও বিড়াল 2012

গুগল প্লাস পোস্টের লিংকটি এখন মারা গেছে
ভাদিম কোতোভ

আমি উপরে যোগ করেছি build.gradle, কিন্তু এটি এখনও কাজ করছে না, কোনও ধারণা?
ডেভিড কলানান

20

আপনি ব্যবহার করে থাকেন android:src="@drawable/some_vector"ছাড়া vectorDrawables.useSupportLibrary = truebuild.gradle ফাইল এবং আপনার অ্যাপ্লিকেশন ভেক্টর চিত্র (ভেক্টর অঙ্কনযোগ্য) থাকে, তখন বিল্ডিং যখন APK ফাইল অ্যান্ড্রয়েড gradle প্লাগইন * থেকে আলাদা পর্দা (hdpi, xhdpi ...) জন্য .png ফাইল অনেক উত্পন্ন আপনার প্রতিটি ভেক্টর অঙ্কনযোগ্য (কেবলমাত্র API = <19 এর জন্য)। ফলাফল - apk এর বড় আকার ।

অ্যান্ড্রয়েডের app:srcCompat="@drawable/some_vector"সাথে ব্যবহার করার সময় vectorDrawables.useSupportLibrary = trueফাইলগুলি তৈরি না করে ভেক্টর আঁকতে সক্ষম ফাইলগুলি ব্যবহার *.pngকরে।

আপনি এটিকে অ্যান্ড্রয়েড স্টুডিও apk বিশ্লেষক সরঞ্জাম দিয়ে পরীক্ষা করতে পারেন। কেবল এবং সাথে ছাড়াও এপিপি তৈরি করুন vectorDrawables.useSupportLibrary = true

আমি মনে করি এটিই মূল পার্থক্য।


সুতরাং আপনার যদি সাপোর্টপোর্ট লাইবারি টি সত্যতে সেট করে থাকে তবে আপনার অ্যান্ড্রয়েড: এসসিআর = এর পরিবর্তে বিশেষ সিনট্যাক্সের প্রয়োজন কেন? আপনি যদি অ্যান্ড্রয়েড ব্যবহার করেন: src = ব্যবহারের সাথে সমর্থন লাইবারি অ্যাক্টিভেটেড, আপনি কি পিএনজির বিস্তার এড়াতে পারবেন?
অস্কার

9

ব্যবহার করুন:

app:srcCompat="@drawable/backImage"

SrcCompat বৈশিষ্ট্যটি আসলে অ্যাপকম্প্যাট লাইব্রেরির মধ্যে সংজ্ঞায়িত করা হয়। গুরুত্বপূর্ণ: এর জন্য আপনাকে উপযুক্ত নেমস্পেস যুক্ত করতে হবে।

xmlns:app="http://schemas.android.com/apk/res-auto"

বিঃদ্রঃ

আপনি যা পাচ্ছেন তা কেবল একটি লিঙ্ক ত্রুটি বলে মনে হচ্ছে যা এড়ানো যাবে। আমি একই ত্রুটিটি চেষ্টা করেছি এবং অর্জন করেছি, তবে এটি সঠিকভাবে কাজ করছে।

আপনি tools:ignore="MissingPrefix"এই ত্রুটিটি অস্থায়ীভাবে না দেখে এড়াতে ব্যবহার করতে পারেন ।

আশা করি এটা কাজে লাগবে.


5

যখন ব্যবহার AppCompatসঙ্গে ImageView(অথবা যেমন উপশ্রেণী ImageButtonএবং FloatingActionButton), আপনি নতুন ব্যবহার করতে সক্ষম হবেন app:srcCompat(সেইসাথে অন্য কোন অঙ্কনযোগ্য উপলব্ধ প্ল্যাটফর্ম পুরোনো সংস্করণের উপর রেফারেন্স ভেক্টর অঙ্কনযোগ্য করার অ্যাট্রিবিউট android:src)

android.support.v7.appcompat.R.attr.srcCompat :

srcCompat

এই চিত্রকল্পের সামগ্রী হিসাবে একটি অঙ্কনযোগ্য সেট করে। প্ল্যাটফর্মের পুরানো সংস্করণগুলিতে চলার সময় ভেক্টর অঙ্কনযোগ্য ব্যবহারের অনুমতি দেয়।

আকারে "@[+][package:]type/name"বা ফর্মের একটি থিমের অ্যাট্রিবিউটের অন্য কোনও সংস্থার রেফারেন্স হতে পারে "?[package:]type/name"


xmlns:app="http://schemas.android.com/apk/res-auto"ব্যবহার করার সময় যুক্ত করতে ভুলবেন না app:srcCompat


4

ভেক্টর এবং অ্যানিমেটেড ভেক্টরগুলি কেবল ফ্রেমওয়ার্কের সাম্প্রতিক সংস্করণগুলিতে সমর্থিত ছিল। srcCompat সামঞ্জস্যযোগ্য লাইব্রেরির সাথে তাদের কাজ করার জন্য ব্যবহার করা যেতে পারে তবে এটি কেবল সমর্থন লাইব্রেরির নির্দিষ্ট দৃশ্যের সাথে কাজ করে। লক্ষ্য করুন যে অ্যাপটি: অ্যান্ড্রয়েডের পরিবর্তে ব্যবহৃত হয় :. এর অর্থ এটি ফ্রেমওয়ার্কের অংশ নয়, তবে আপনার অ্যাপ্লিকেশন দ্বারা সংজ্ঞায়িত একটি প্যারামিটার।


3
app:srcCompat="some_resource" 

উল্লেখ করা হয় যে এটি অ্যাপকম্প্যাটঅ্যাক্টিভিটি এসসিআর যা সমর্থন লাইব্রেরিতে আসে

android:src="some_resource"

সাধারণ ক্রিয়াকলাপ বোঝায়।


3

যখন ব্যবহার AppCompatসঙ্গে ImageView(অথবা যেমন উপশ্রেণী ImageButtonএবং FloatingActionButton), আপনি নতুন ব্যবহার করতে সক্ষম হবেন app:srcCompat(সেইসাথে অন্য কোন অঙ্কনযোগ্য উপলব্ধ রেফারেন্স ভেক্টর অঙ্কনযোগ্য করার অ্যাট্রিবিউট android:src)। এবং যদি আপনি রানটাইমে অঙ্কনযোগ্য পরিবর্তন করে থাকেন তবে আপনি setImageResource()আগের মতো একই পদ্ধতি ব্যবহার করতে সক্ষম হবেন (সেখানে কোনও পরিবর্তন নেই)।

আপনার অ্যাপ্লিকেশনটিতে ভেক্টর ড্রয়াবলগুলিকে একীভূত করার সবচেয়ে বুদ্ধিমান পদ্ধতি ব্যবহার AppCompatএবং app:srcCompatএটি। আপনি দেখতে পাবেন যে সরাসরি রেফারেন্সিং ভেক্টর ড্রয়াবলগুলি ললিপপেরapp:srcCompat আগে ব্যর্থ হবে ।


1

অ্যান্ড্রয়েড 5.0 (এপিআই স্তর 21) এবং উচ্চতর ভেক্টর ড্রয়যোগ্য সমর্থন সরবরাহ করে যাতে পুরানো সংস্করণ অ্যাপ্লিকেশনটিতে ভেক্টর ড্রয়াবল সমর্থন করতে পারে: এসআরসিকম্প্যাট যুক্ত করা হয়েছিল

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