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

تعویض resource در ImageView 

JSONObject  12 سال پیش  12 سال پیش
+3 0

سلام

دوتا ImageView دارم که میخوام با تاچ رو هر کدوم Resource  هاشون با هم عوض شه

خودم اینو مینویسم ولی میگه محتویات setImageResources باید int باشه

img1.setImageResource(img2.getResources());

چیکار کنم ؟

پیشاپیش از کمکتون ممنونم

 برای این سوال 9 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
0 0

عذر خواهی ! ، دستور قبلی اشتباه بود ، برای رفع ابهام نحوه ی استفاده از اونم میگم 

setImageDrawable(getResources().getDrawable(R.drawable.icon));

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

img.setImageResource(R.drawable.img);

اگه گیره اینی که چرا int میگیره ، علت رو من اینجوری فهمیدم ! 

تو فایل R.java که توی پوشه ی gen هست ، آدرس یه خونه از حافظه رو به صورت Hex درون یه متغییر int ذخییره میکنه ، اگه بازش کنی میبینی ! اینم یه نمونه دستور

public static final int img=0x7f020000;

حالا تو وقتی ریسورس رو عوض کنی تمومه دیگه ! ، نمیدونم چرا اینفدر کشش میدی ، نشد پروژه رو بزار دان کنیم ، ولی پروژه ی لامپ که فکر کنم  پارت 3 هست رو حتما ببین

0 0
اینو که نوشتم گفت img یه ImageView هست و میخوای توش چیزی از جنس Drawable بریزی (Error داد) (12 سال پیش)
0 0
احمد فیلم کردی ما رو ؟! ، الان از پروژه ی خودم چک کردم ، برو تست کن مگو چیست تست ! (12 سال پیش)
0 0
الوووووووووووووووووووووووو اینجا نمیشه عکس گذاشت برو پایین ببینش (12 سال پیش)
0 0
داداش مرسی که انقدر پی گیری ولی خدا شاهده مشکل حل نشد، یعنی اصلا با جواب قبلیت که الان تصحیحش کردی یه سوال دیگه بوجود آوردی که دمت گرم اونو حلش کردی ولی سوال خودم هنوز سر جاشه (12 سال پیش)
0 0
خودم احساس میکنم که باید یه فایل xml براش نوشت ؛ حالا تا پنج شنبه صبر میکنیم ببینیم استاد چی میگه ( آقا بهنام اینو تا آخر بخونی بعد جواب بدی ها ، دمت گرم ) (12 سال پیش)
0 0
گفتم ، یا شما خیلی عجیبی ، یا من خیلی غریبم ! ، پروژه بزار چک کنیم (12 سال پیش)
0 0
جواب من رو بخونید :) اما مثل خودتون که منو مجبور کردید تا آخرش بخونم، شما هم تا آخرش بخونید :) (12 سال پیش)
پاسخ به سوال 
JavaDroid  12 سال پیش
0 0

بهتره هنگامی که به یک imageview تصویری رو نسبت می دید به خاصیت tag آن هم ان تصویر را نسبت دهید تا به راحتی از آن استفاده کنید .

img1.setImageResource(R.drawable.image1); 
img1.setTag(Integer.valueOf(R.drawable.image1));

img2.setImageResource(R.drawable.image2);
img2.setTag(Integer.valueOf(R.drawable.image2));


و اینگونه جابجا کنید

 img1.setImageResource(img2.getTag());

 

0 0
داداش این کاری که تو کردی داره با یه عکس امتحان میشه (اسم ِ یه عکس) ولی من میخوام با Source کار کنم یعنی ممکنه سریِ بعد دیگه این عکس نباشه یه عکس دیگه با یه اسم دیگه ای توش باشه( اما تو اینجا داری tag رو به یه عکس منحصر به فرد میدی) (12 سال پیش)
پاسخ به سوال 
JSONObject  12 سال پیش
0 0

الو بیا اینجا(این عکس ِ خطاست)

0 0
پاسخ تصحیح شد ! ، برو دریا شو ، مزاحمت نمیشم (12 سال پیش)
پاسخ به سوال 
JSONObject  12 سال پیش
0 0

اصل خواسته ام اینه: که اگه رو قرمزه تاچ شد سبزه بشه قرمزه    و    همزمان قرمزه بشه سبزه(نه اینکه تبدیل شن ، جاشون عوض شه)
و در مورد آبیه هم الان اگر روش تاچ شد بشه قرمزه (چون الان بزرگه قرمز شده) و قرمزه بشه آبیه  و حالا که جاشون عوض شده برعکس 

پاسخ به سوال 
javac  12 سال پیش
0 0

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

 setImageResource()

 که استاد هم توی یکی از فیلم ها(دقیقا یادم نیست کدوم بود!) طریقه ساخت یک لامپ ،که با کلیک کردن روشن و خاموش میشد رو آموزش داده بود.

پاسخ به سوال 
Hajhosseini  12 سال پیش
0 0

منم این مشکل رو داشتم ولی از یک راه دیگه حلش کردم.میخواستم عکسی که بین 4 تا ImageView که هر 3 ثانیه عکساشون عوض میشه و کلیک شده رو بگیرم و در فرم بعدی فول سایز و با اسکرول افقی و عمودی نشونش بدم.
برای این کار مجبور شدم زمانی که ImageView رو مقداردهی میکنم یک متغیر String هم مقدار بدم و برای فرستادن آدرس عکس از اون متغیر استفاده کنم

0 0
روش درستیه ، اما ساده تر اینه که از همون TAG استفاده بشه ، نوعش هم فکر کنم OBJECT هست که کار رو ساده تر میکنه ! پاسخ سوم همینه ، ولی نوعش رو تغییر داده که یکم کار رو سخت کرده ! (12 سال پیش)
0 0
دادش اگه میشه کدش رو بذار ببینیم (12 سال پیش)
پاسخ به سوال 
Hajhosseini  12 سال پیش
0 0

کد ها خیلی زیاده و بر اساس گفته ی استاد فقط قسمتی که مورد استفاده ی شماس رو گذاشتم

فرستادن به فرم بعدی :

 OnClickListener imageClickListener = new OnClickListener() {

   @Override
   public void onClick(View image) {

    Intent intent = new Intent(ActivityMain.this, ActivityDownload.class);
    intent.putExtra("THUMBNAIL_LOCAL_SOURCE", selectedFileSdcardPath);
    ActivityMain.this.startActivity(intent);
                                   }
                                                           };

پر کردن ImageView ها :

 public static void setImageBackground(String request) {
        if (request.contains("image-thumbnail-" + imageIndex + ".jpg")) {
            Bitmap bitmap = BitmapFactory.decodeFile(request);
img[0].setImageBitmap(bitmap); } else if (request.contains("image-thumbnail-" + (imageIndex + 1) + ".jpg")) { Bitmap bitmap = BitmapFactory.decodeFile(request); img[1].setImageBitmap(bitmap); } else if (request.contains("image-thumbnail-" + (imageIndex + 2) + ".jpg")) { Bitmap bitmap = BitmapFactory.decodeFile(request); img[2].setImageBitmap(bitmap); } else if (request.contains("image-thumbnail-" + (imageIndex + 3) + ".jpg")) { Bitmap bitmap = BitmapFactory.decodeFile(request); img[3].setImageBitmap(bitmap); }
selectedFileSdcardPath = request;
}
پاسخ به سوال 
uncocoder  12 سال پیش
+2 0

وای بچه ها من قاطی کردم. خدا به داد برسه.

اول از همه ، می دونیم که چطور میشه یک Resource رو روی ImageView بارگزاری کرد ( در واقع به گفته دوستان پروژه لامپ هست )

دوم از همه :) می رسیم اینجا که از کجا بفهمیم که هر ImageView کدوم Resource رو داره که هزار تا راه فوق العاده ساده داریم:

روش اول

بجای استفاده از Resource از Bitmap استفاده کنید، مثلاً

Bitmap bitmapRed = BitmapFactory.decodeResource(getResources(), R.drawable.red);
img1.setImageBitmap(bitmapRed);

بعدش بجای مقایسه از این عبارت استفاده کنید:

Bitmap imageSource = ((BitmapDrawable) img1.getDrawable()).getBitmap();
if (imageSource == bitmapRed){
Log.i("LOG", "img1 source is R.drawable.red");
}

روش دوم

از این عبارت برای مقایسه استفاده کنید ( زمانیکه Resource بجای Bitmap بارگزاری کردید )

if (img1.getDrawable().getConstantState().equals(
getResources().getDrawable(R.drawable.red).getConstantState())) {

Log.i("LOG", "img1 source is R.drawable.red");
}

روش سوم

به گفته ALU جان از setTag استفاده کنید.

روش چهارم

از HashMap به شکل زیر استفاده کنید:

HashMap<ImageView, Integer> resourceMap = new HashMap<ImageView, Integer>();

//after setImageResource do
resourceMap.put(img1, R.drawable.red);

//for get loaded resource
int resource = resourceMap.get(img1);

روش پنجم

از یک MyImageView استفاده کنید:

public class MyImageView extends ImageView {

....

private int imageResource;

public void setResource(int resource){
this.setImageDrawable(resource);
this.imageResource = resource;
}

public int getResource(){
return this.imageResource;
}
}

دیگه 995 روش دیگه با خودتون :)

 

و اما راه حل مشکل شما ( زمانی که فقط تعویض مد نظرتون باشه و نه مقایسه )

Drawable img1Drawable = img1.getDrawable();
Drawable img2Drawable = img2.getDrawable();
img1Drawable.setImageDrawable(img2Drawable);
img2Drawable.setImageDrawable(img1Drawable);

به همین سادگی و به همین خوشمزگی

0 0
تشکر :) (12 سال پیش)
پاسخ به سوال 
JSONObject  12 سال پیش
0 0

مرسی استاد عجله ای نیست اما اگه و اگه وقت کردین ویدئوی اینها رو هم لطفا تدوین کنید

اما تو آخرین بخش جوابتون که جواب سوال منو دادین وقتی اول img1 رو مقدار دهی میکنم و تبدیل به مقدار img2 میشه دیگه تبدیل شده،  خط بعد که اجرا میشه چون جفت ِتصاویر الان یکی شده دیگه تعویضشون معنی نداره ، به این صورت که وقتی کد به شکل ِ

 img2.setImageDrawable(img1.getDrawable());
 img1.setImageDrawable(img2.getDrawable());

نوشته میشه، دو تصویر تبدیل به تصویر  ِimg1 میشه و وقتی به صورت  ِ

 img1.setImageDrawable(img2.getDrawable());
 img2.setImageDrawable(img1.getDrawable());

نوشته میشه، دو تصویر به تصویر  ِimg2  تبدیل میشن

چه باید کرد؟

0 0
شما سورس من رو دقت کن. اول ریختمشون تو دو تا اشاره گر و بعد از اشاره گرها ریختم روی SetImageDrawable . چک کن خبر بده. (12 سال پیش)
0 0
استاد ببخشید بعد دو هفته دارم میخونم نظرتونو ، خواستم بگم مث همیشه حق با شما بود (دمت قیژژژژژژ استاد) (12 سال پیش)

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