استفاده از رنگ ها به صورت ارایه

پرسیده شده
فعالیت 1020 روز پیش
دیده شده 369 بار
0

عرض سلام و خسته نباشید.

اگه بخوایم لیستی (ارایه ای) از رنگ ها را در xml تعریف کنیم و از کلاس جاوا به اون لیست دسترسی پیدا کنیم چیکار باید کرد؟

فایل پیوست

Elham Shafiei
Elham Shafiei

27 تیر 00

1
حذف شده

سلام و احترام

 

ممنون از پاسخ میلاد عزیز 

همچنین شما میتوانید :

میتونید در مسیر res/values بیایید و یه فایل با نام مثلا array.xml بسازید سپس ابتدا رنگ هایی که میخواهید رو تعریف میکنید تا اون ها رو به ارایه ای از رنگ هاتون اضافه کنید یعنی چی؟

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="bright">#FF007F</color>
    <color name="red">#FF0000</color>
    <color name="orange">#FF7F00</color>

    <array name="rainbow">
        <item>@color/bright</item>
        <item>@color/red</item>
        <item>@color/orange</item>
    </array>
</resources>

بدین صورت که در کد بالا امدیم ابتدا رنگ هامون رو مشخص کردیم یعنی (bright,red,orange) و سپس اومدیم و ارایه ای ساختیم و نام اون رو برابر مثلا rainbow قرار دادیم و در این ارایه رنگ هایی که خواستیم به عنوان عضوی از این ارایه اضافه کردیم پس تا اینجا توانستیم ارایه ای از رنگ ها رو بسازیم.

حال برای گرفتن این ارایه در کد جاوا لازم هست ارایه ای بسازید و اون ارایه رو از R.array بخوانید :

(نکته : R به معنای Resources هست که میرود در res و جایی که فایل ما با نام array هست رو پیدا میکند چون گفتیم R.array)

int[] rainbow =getApplicationContext().getResources().getIntArray(R.array.rainbow);
در اینجا شما میتونید روی ویو مد نظرتون متد زیر رو صدا بزنید و رنگ مربوطه رو ست کنید
setColor(rainbow[1]);
OR
setBackground(rainbow[2])

حال شما لازم هست مقادیر موجود در این ارایه رو بگیرید(مثلا حلقه بزنید یا ایندکس خاصی از اون رو واکشی کنید)

 

البته در ادامه راجب تمام این موارد صحبت شده پس نگران باشید و جلسات رو ادامه بدید و در حد همان جلسات اموزش ها رو دنبال کنید هنگامی که دوره رو تمام کردید اگر موردی کم و کاست دیدید پیشنهاد بدید تا اضافه شود.

اینکه از همان ابتدا به دنبال یادگیری تمام مباحث باشید کمی در ادامه ممکن هست انرژی شما رو بگیره (این هم یه پیشنهاد بود از دید خودم به شما).

داکیومنت مربوطه:  لینک

لینک پاسخ مشابه همین سوال در استک اور فلو 

 

لینک شماره ۲ 

فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

27 تیر 00

حذف شده
سعی میکنم به همین صورت که میفرمایید جلو برم. ممنون از پیشنهادتون. ?
Elham Shafiei

27 تیر 00

0
حذف شده

سلام وقت بخیر

داخل فایل colors.xml به صورت زیر آرایتون رو تعریف میکنید

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="colors">
        <item>#FFFF0000</item> //red
        <item>#FF00FF00</item> //green
        <item>#FF0000FF</item> //blue
    </string-array>
</resources>

داخل اکتویتی هم به صورت زیر میتونید به این آرایه دسترسی داشته باشید

TextView arrayColorTv = findViewById(R.id.tv_main_arrayColor);
        String[] colors = getResources().getStringArray(R.array.colors);
        arrayColorTv.setTextColor(Color.parseColor(colors[0])); //red
        arrayColorTv.setTextColor(Color.parseColor(colors[1])); //green
        arrayColorTv.setTextColor(Color.parseColor(colors[2])); //blue

فهم کد بسیار سادست ولی اگر جایی رو متوجه نشدین بگین که براتون توضیح بدم

 

 

فایل پیوست

0
حذف شده

با عرض سلام

صحبت هاتون درست هست. منتهی من میخوام از این آرایه از رنگ ها در کلاس FragmentStateAdapter برای ViewPager استفاده کنم. هدفم این هست که با یک حلقه for مقادیر  متغیر هر fragment  شامل title , description   iconو  رنگ هر fragment را از ارایه های تعریف شده در فایل های xml دریافت کنم که با خطای FATAL EXCEPTION روبرو میشم. متد createFragmen از کلاس FragmentStateAdapter به صورت زیر تعریف کرده ام. 

public Fragment createFragment(int position) {
   String[] titles = context.getResources().getStringArray(R.array.titles);
   String[] descriptions =context.getResources().getStringArray(R.array.descriptions);
   int[] imageId ={R.drawable.ic_food ,R.drawable.ic_movie ,R.drawable.ic_discount    ,R.drawable.ic_travel,R.drawable.ic_hotel};
   int[] bgColors = context.getResources().getIntArray(R.array.bgcolors);
   for (int i = 0 ; i < 5; i++){
       slideFragmentViewPager = SlideFragmentViewPager.newInstance    (bgColors[position],imageId[position],titles[position],descriptions[position]);
    }
    return slideFragmentViewPager;
}
فایل پیوست

Elham Shafiei

توسط

Elham Shafiei

27 تیر 00

حذف شده
سلام این حلقه for اضافست روی هر position یا فرگمت دارین 5 بار حلقه رو تکرار میکنید! نیازی نیست به این کار. پروژه تونو کامل بفرستین تا من بررسی کنم تا بتونم کمکتون کنم. در صورت تمایل میتونید تلگرام هم بهم پیام بدین @MiladAzizzadehTLG