تغییر رنگ ایکون ها مثل فیسبوک(حل شد)
سلام بچه ها ...
دوستان من توی یه برنامه ای از imageView استفاده کردم که رو هرکدوم کلیک بشه یه فرگمنت رو باز میکنه اوکی..
حالا میخوام با کلیک روی هرکدوم از این عکسا رنگش عوض شه ... مثلا حالا مشکیه میخوام ابی بشه ... من از این کد
استفاده کردم ولی چیزی که میخواستم نشد... من میخوام رو هرکدوم کلیک بشه رنگ عکس قبلیش بپره (به حالت اولش برگرده) .. اوکی؟
دقیقا مث فیسبوک ... راهی رو پیشنهاد میکنید؟ ممنون اینم کدی که استفاده کردم.
این تصویر برنامه اس که هنوز کامل نشده ..
public boolean state;
state =! state;
if(state){
img_pay.setImageResource(R.drawable.ch_pay);
}else{
img_pay.setImageResource(R.drawable.pay);
}
سلام میتونید از روش زیر استفاده کنید.
اول توی فایل 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);
یه مقدار هم میتونید تغیرش بدید و به شکل متد در بیاریدش و راحت ازش استفاده کنید
شما می تونید با درست کردن متد زیر خیلی راحت اینکارو انجام بدین: (مثلا شما آی دی ایمیج هارو 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);
بهترین راه همین عوض کردن عکس هست. به نظرم اصلا دنبال این نرین که بخواین رنگ رو تغییر بدین. از هر عکسی 2 نسخه داشته باشین (مثلا یکی آبی یکی مشکی ) واس موقعیت های مختلف عوض ـش کنین. مثل جوابی که آقای وحید دادن.
می تونید از کد زیر استفاده کنید :
وقتی روی آیکون دیگه کلیک میکنی یکبار دویاره فیلتر رو به رنگ پیشفرض تغییر بده بعد دوباره آبی کن
img_pay.setColorFilter(Color.BLUE);
img_global.setColorFilter(Color.parseColor("#42A5F5"));
img_pay.setColorFilter(Color.parseColor("#BDBDBD"));
img_add.setColorFilter(Color.parseColor("#BDBDBD"));
img_menu.setColorFilter(Color.parseColor("#BDBDBD"));
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .