بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

تغییر رنگ ایکون ها مثل فیسبوک(حل شد)

مدیریت گفتگو
sana ebadi 9 سال پیش
آخرین تغییر: 9 سال پیش

سلام بچه ها ...

دوستان من توی یه برنامه ای از imageView استفاده کردم که رو هرکدوم کلیک بشه یه فرگمنت رو باز میکنه اوکی..

حالا میخوام با کلیک روی هرکدوم از این عکسا رنگش عوض شه ... مثلا حالا مشکیه میخوام ابی بشه ... من از این کد

استفاده کردم ولی چیزی که میخواستم نشد... من میخوام رو هرکدوم کلیک بشه رنگ عکس قبلیش بپره (به حالت اولش برگرده) .. اوکی؟

دقیقا مث فیسبوک ... راهی رو پیشنهاد میکنید؟ ممنون اینم کدی که استفاده کردم. این تصویر برنامه اس که هنوز کامل نشده ..

public boolean state;

state =! state;
if(state){
img_pay.setImageResource(R.drawable.ch_pay);
}else{
img_pay.setImageResource(R.drawable.pay);
}

 

نظرات

kamal_hajatmand 9 سال پیش
احتمالا رنگش عوض نمیشه و خود عکس عوض میشه ، وقتی روی هر کدوم از عکس ها کلیک شد ، سه تا عکس بعدی رو بذار تو حالت عکس غیر فعال و به همینی که الان کلیک میشه عکس فعال (همونی که رنگش متفاوته) رو بدین
خواست خدایی 9 سال پیش
احتمالا براش xml تعریف کرده و برای ان پرست و ان فوکوس و .... کد نوشته
sana ebadi 9 سال پیش
من هم از عکسای دیگه ای استفاده کردم ولی کند بود و چیزی که میخواستم نمیشد الان از پاسخ دوستان استفاده میکنم ببینم جواب میده یا ن ؟ با تشکر از همه ی دوستان
sana ebadi 9 سال پیش
بچه ها ممنون ولی هنوز درست نشده.
سجاد عباسی 9 سال پیش
اگه فقط میخاید رنگ عکس ها عوض شه از ایکون فونت ها استفاده کنید یه کتابخونه هست که امکان استفاده از فونت ایکون رو فراهم میکنه و به راحتی متن میشه رنگشو عوض کرد.

پاسخ‌ها 5

مشاهده پاسخ صحیح
علیرضا کامکار 9 سال پیش

سلام میتونید از روش زیر استفاده کنید.

اول توی فایل xml یه ImageView تعریف کنید و با استفاده از src یه drawable رو بهش بدید ( از background استفاده نکنید )  مثلا :

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:src="@drawable/ic_insert"
        android:id="@+id/img_insert"
     />

بعدش با استفاده از جاوا میتونید به شکل داینامیک عوضش کنید

int color = Color.parseColor("#1565C0");
ImageView imageView = (ImageView) findViewById(R.id.img_insert);
Drawable drawable = ContextCompat.getDrawable(context, R.drawable.ic_insert);
ColorFilter filter = new LightingColorFilter(color, color);
drawable.setColorFilter(filter);
imageView.setImageDrawable(drawable);

یه مقدار هم میتونید تغیرش بدید و به شکل متد در بیاریدش و راحت ازش استفاده کنید

نظرات

sana ebadi 9 سال پیش
ممنون از روش شما استفاده کردم . ولی به درد چیزی که میخوام نخورد. این راه شما فقط رنگ ایکونو عوض میکرد و وقتی رو ایکون بعدی کلیک میکردی رنگ قبلی نمیپرید . ولی بازم عالی بود . مریب ولی یه سوال منو میخواستم متدش کنم یه جا اشکال داشتم توی اون تیکه اخر کد که ایدی عکسا رو میگرفت . باید براش یه متد جدا تعریف کنم که هربار یه اید رو بگیره ؟
برای اینکه رنگ آیکن قبلی بپره باید دوباره دستور رو براش بنویسید ینی یک دستور برای تغیر آیکن تبی که توش هستید یکی هم برای اون قبلی (معمولا همه راه ها همین مدلین) بهتره که از چند آیکن مختلف استفاده نکنید چون داینامیک نیست مثلا توی برنامه هایی که تنظیمات رنگ دارن و ممکنه کلی رنگ مختلف داشته باشن این مدلی برای هر رنگ باید دوتا تصویر داشته باشید و این اصلا خوب نیست متدش هم من اینجا براتون نوشتم میتونید استفاده کنید ' public void changeIconColor(ImageView image, int resDrawableId, int color) { Drawable drawable = ContextCompat.getDrawable(context, resDrawableId); ColorFilter filter = new LightingColorFilter(color, color); drawable.setColorFilter(filter); image.setImageDrawable(drawable); } '
sana ebadi 9 سال پیش
ممنونم واقعا ولی منظورتون از نوشتن دوباره ی کد برای بریدن رنګ یجورReset کردنه؟ اګه ابنو بیشتر توضیح بدید من مشکلم حل میشه ... واقعا ممنونم
sana ebadi 9 سال پیش
خیلی ممنون واقغا روش جالبی بود تا حالا استفاده نکرده بودم یه چیز جدید یاد ګرفتم دوست عزیز
وحید 9 سال پیش

شما می تونید با درست کردن متد زیر خیلی راحت اینکارو انجام بدین: (مثلا شما آی دی ایمیج هارو myImage1 و myImage2 و myImage3 و myImage4 گذاشتید)

 void myMethod(ImageView img , int i){
myImage1.setImageResource(R.drawable.image1_false);
myImage2.setImageResource(R.drawable.image2_false);
myImage3.setImageResource(R.drawable.image3_false);
myImage4.setImageResource(R.drawable.image4_false);

if(i == 1) {
img.setImageResource(R.drawable.image1_true);
}else if(i == 2) {
img.setImageResource(R.drawable.image2_true);
}else if(i == 3) {
img.setImageResource(R.drawable.image3_true);
}else if(i == 4) {
img.setImageResource(R.drawable.image4_true);
}
}

حالا تو SetOnClick هر ایمیج می تونید این کد کوتاه رو بذارید:

 myMethod(myImage1,1);

نظرات

sana ebadi 9 سال پیش
ممنون ولی میشه بیشتر توضیح بدین؟ وقتی استفاده کردم خیلی ارور میداد . ینی برنامم forceClose میداد. منظورتون از image1_false همون عکسی هست که دیفالته بعد image1_true عکسیه که میخوام عوض بشه ؟ درست کار نکرد برام چرا ؟ اگه بیشتر توضیح بدین ممنون میشم
QUQU 9 سال پیش

بهترین راه همین عوض کردن عکس هست. به نظرم اصلا دنبال این نرین که بخواین رنگ رو تغییر بدین. از هر عکسی 2 نسخه داشته باشین (مثلا یکی آبی یکی مشکی ) واس موقعیت های مختلف عوض ـش کنین. مثل جوابی که آقای وحید دادن.

نظرات

sana ebadi 9 سال پیش
ن نمیخوام از دوتا عکس استفاده کنم ږ خیلی ممنون حل شدږ
Mseif 9 سال پیش

 پاسخ صحیح

می تونید از کد زیر استفاده کنید : 

وقتی روی آیکون دیگه کلیک میکنی یکبار دویاره فیلتر رو به رنگ پیشفرض تغییر بده بعد دوباره آبی کن 

 img_pay.setColorFilter(Color.BLUE);

نظرات

sana ebadi 9 سال پیش
تست میکنم ببینم چی میشه ممنون
sana ebadi 9 سال پیش
واقعا ممنون چون درست شدږ و چیزی که میخواستم شدږ ولی برای این روش فقط میشه رنګ هایی که خودش بیشنهاد میده رو استفاده کرد یا میشه از parseColor استفاده کرد؟ فک کنم بشه مګه ن ؟/ خیلللیییی ممنون
وحید 9 سال پیش
یعنی با این کد رنگ عکس عوض می شه؟
sana ebadi 9 سال پیش
بله و خیلی نزدیک به چیزی که میخواسنتم شد. البته راه صحیحش اینه که از ویو \یجر و تب استفاده کنیم ولی من میخواستم بدون استفاده از اینا که هنوز بلد نیستم یه تقلیدی از فیسبوک کرده باشم که تونستم البته به کمک دوستان بازم ممنون
sana ebadi 9 سال پیش

img_global.setColorFilter(Color.parseColor("#42A5F5"));
img_pay.setColorFilter(Color.parseColor("#BDBDBD"));
img_add.setColorFilter(Color.parseColor("#BDBDBD"));
img_menu.setColorFilter(Color.parseColor("#BDBDBD"));


نظرات

sana ebadi 9 سال پیش
dar har onClick bayad neveshteh she! hal shod . mamnooon
sana ebadi 9 سال پیش
البته \اسخ صحیح مربوط به دوستمون @Mseif هستش که خلی ازشون ممنوم و البته از تمامی دوستان و این کد صحیح هستش باید برای هر onClickمربوط به عکس نوشته شهږ خیلی ساده

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .