آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

sana ebadi  9 سال پیش  9 سال پیش
+1 0

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

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

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

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

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

public boolean state;

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

 

+1 0
احتمالا رنگش عوض نمیشه و خود عکس عوض میشه ، وقتی روی هر کدوم از عکس ها کلیک شد ، سه تا عکس بعدی رو بذار تو حالت عکس غیر فعال و به همینی که الان کلیک میشه عکس فعال (همونی که رنگش متفاوته) رو بدین (9 سال پیش)
+1 0
احتمالا براش xml تعریف کرده و برای ان پرست و ان فوکوس و .... کد نوشته (9 سال پیش)
0 0
من هم از عکسای دیگه ای استفاده کردم ولی کند بود و چیزی که میخواستم نمیشد الان از پاسخ دوستان استفاده میکنم ببینم جواب میده یا ن ؟ با تشکر از همه ی دوستان (9 سال پیش)
0 0
بچه ها ممنون ولی هنوز درست نشده. (9 سال پیش)
+1 0
اگه فقط میخاید رنگ عکس ها عوض شه از ایکون فونت ها استفاده کنید یه کتابخونه هست که امکان استفاده از فونت ایکون رو فراهم میکنه و به راحتی متن میشه رنگشو عوض کرد. (9 سال پیش)
 برای این سوال 5 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
علیرضا کامکار  9 سال پیش
+3 0

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

اول توی فایل 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);

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

+1 0
ممنون از روش شما استفاده کردم . ولی به درد چیزی که میخوام نخورد. این راه شما فقط رنگ ایکونو عوض میکرد و وقتی رو ایکون بعدی کلیک میکردی رنگ قبلی نمیپرید . ولی بازم عالی بود . مریب ولی یه سوال منو میخواستم متدش کنم یه جا اشکال داشتم توی اون تیکه اخر کد که ایدی عکسا رو میگرفت . باید براش یه متد جدا تعریف کنم که هربار یه اید رو بگیره ؟ (9 سال پیش)
+1 0
برای اینکه رنگ آیکن قبلی بپره باید دوباره دستور رو براش بنویسید ینی یک دستور برای تغیر آیکن تبی که توش هستید یکی هم برای اون قبلی (معمولا همه راه ها همین مدلین) بهتره که از چند آیکن مختلف استفاده نکنید چون داینامیک نیست مثلا توی برنامه هایی که تنظیمات رنگ دارن و ممکنه کلی رنگ مختلف داشته باشن این مدلی برای هر رنگ باید دوتا تصویر داشته باشید و این اصلا خوب نیست متدش هم من اینجا براتون نوشتم میتونید استفاده کنید ' 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); } ' (9 سال پیش)
0 0
ممنونم واقعا ولی منظورتون از نوشتن دوباره ی کد برای بریدن رنګ یجورReset کردنه؟ اګه ابنو بیشتر توضیح بدید من مشکلم حل میشه ... واقعا ممنونم (9 سال پیش)
0 0
خیلی ممنون واقغا روش جالبی بود تا حالا استفاده نکرده بودم یه چیز جدید یاد ګرفتم دوست عزیز (9 سال پیش)
پاسخ به سوال 
وحید  9 سال پیش
+2 0

شما می تونید با درست کردن متد زیر خیلی راحت اینکارو انجام بدین: (مثلا شما آی دی ایمیج هارو 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);
0 0
ممنون ولی میشه بیشتر توضیح بدین؟ وقتی استفاده کردم خیلی ارور میداد . ینی برنامم forceClose میداد. منظورتون از image1_false همون عکسی هست که دیفالته بعد image1_true عکسیه که میخوام عوض بشه ؟ درست کار نکرد برام چرا ؟ اگه بیشتر توضیح بدین ممنون میشم (9 سال پیش)
پاسخ به سوال 
QUQU  9 سال پیش
+1 0

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

0 0
ن نمیخوام از دوتا عکس استفاده کنم ږ خیلی ممنون حل شدږ (9 سال پیش)
پاسخ به سوال 
Mseif  9 سال پیش
+1 0

 پاسخ صحیح

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

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

 img_pay.setColorFilter(Color.BLUE);
0 0
تست میکنم ببینم چی میشه ممنون (9 سال پیش)
0 0
واقعا ممنون چون درست شدږ و چیزی که میخواستم شدږ ولی برای این روش فقط میشه رنګ هایی که خودش بیشنهاد میده رو استفاده کرد یا میشه از parseColor استفاده کرد؟ فک کنم بشه مګه ن ؟/ خیلللیییی ممنون (9 سال پیش)
+1 0
یعنی با این کد رنگ عکس عوض می شه؟ (9 سال پیش)
0 0
بله و خیلی نزدیک به چیزی که میخواسنتم شد. البته راه صحیحش اینه که از ویو \یجر و تب استفاده کنیم ولی من میخواستم بدون استفاده از اینا که هنوز بلد نیستم یه تقلیدی از فیسبوک کرده باشم که تونستم البته به کمک دوستان بازم ممنون (9 سال پیش)
پاسخ به سوال 
sana ebadi  9 سال پیش
+1 0

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


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

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