今天開發(fā)的時(shí)候遇到一個(gè)小問題娱仔,在給一個(gè)ImageView更換圖片的時(shí)候其做,我使用的是java的方式更換咱揍,使用的方法是setBackgroundResource(),但奇怪的是總是沒有效果钥勋。
最后查明原因是:我在編寫xml文件的時(shí)候惭适,為了查看效果,給這個(gè)ImageView設(shè)置了src递递,這時(shí)候再設(shè)置background的時(shí)候回發(fā)生重疊喷橙。
解決方法:將xml中的src刪除即可。
問題延伸:
一登舞、ImageView設(shè)置background和src的區(qū)別贰逾。
1.src是圖片內(nèi)容(前景),bg是背景菠秒,可以同時(shí)使用疙剑。
2.background會(huì)根據(jù)ImageView組件給定的長寬進(jìn)行拉伸,而src就存放的是原圖的大小践叠,不會(huì)進(jìn)行拉伸 言缤。
3.scaleType只對src起作用;bg可設(shè)置透明度禁灼。
二管挟、ImageView幾種不同的設(shè)置圖片的方式。
設(shè)置background:
1.image.setBackground(getResources().getDrawable(R.drawable.blackk));//變形
2.image.setBackgroundResource(R.drawable.blackk);//變形 3.image.setBackgroundDrawable(getResources().getDrawable(R.drawable.blackk));////變形
源碼:這三種方法的實(shí)質(zhì)都是調(diào)用方法3setBackgroundDrawable()弄捕。
設(shè)置src:
1.image.setImageDrawable(getResources().getDrawable(R.drawable.blackk)); //不會(huì)變形
2.Stringpath=Environment.getExternalStorageDirectory()+File.separator+"test1.jpg";
Bitmap bm = BitmapFactory.decodeFile(path);
image.setImageBitmap(bm);//不會(huì)變形
3.image.setImageResource(R.drawable.blackk);//不會(huì)變形
源碼: 其中方法2就是將bitmap轉(zhuǎn)換為drawable然后調(diào)用方法1僻孝,方法1和方法3都是調(diào)用updateDrawable()方法。