android中表徵圖重疊的實現

來源:互聯網
上載者:User

我們在做應用開發時,特別是在做圖片瀏覽器或檔案瀏覽器時,涉及到圖片或檔案的管理時,我們難免需要批量處理它們,就需要用到多選功能。怎麼來在視覺上顯示給使用者檔案時候已經選定了呢,我們可以改變檔案名稱的字型的顏色來標記,但不是很明顯,最好還是在檔案或圖片表徵圖上顯示一個勾以表選中。在android的layout檔案裡,我們是用一個ImageView控制項來顯示一張圖片,如果需要在圖片上顯示一個勾,非得在layout檔案裡實現的話,那就只能用絕對布局了,使兩個ImageView重疊起來,此方法顯然不可取,其自適應能力很差!

在這裡,我們可以使用兩種方法來實現:

第一種:使用canvas

public void first(View v) {

// 防止出現Immutable bitmap passed to Canvas constructor錯誤
Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),
R.drawable.apple).copy(Bitmap.Config.ARGB_8888, true);
Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.go)).getBitmap();

Bitmap newBitmap = null;

newBitmap = Bitmap.createBitmap(bitmap1);
Canvas canvas = new Canvas(newBitmap);
Paint paint = new Paint();

int w = bitmap1.getWidth();
int h = bitmap1.getHeight();

int w_2 = bitmap2.getWidth();
int h_2 = bitmap2.getHeight();

paint.setColor(Color.GRAY);
paint.setAlpha(125);
canvas.drawRect(0, 0, bitmap1.getWidth(), bitmap1.getHeight(), paint);

paint = new Paint();
canvas.drawBitmap(bitmap2, Math.abs(w – w_2) / 2,
Math.abs(h – h_2) / 2, paint);
canvas.save(Canvas.ALL_SAVE_FLAG);
// 儲存新合成的圖片
canvas.restore();

image.setImageBitmap(newBitmap);
}

 

第二種:使用LayerDrawable,具體代碼如下

public void second(View v) {

Bitmap bitmap1 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.apple)).getBitmap();
Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.go)).getBitmap();

Drawable[] array = new Drawable[2];
array[0] = new BitmapDrawable(bitmap1);
array[1] = new BitmapDrawable(bitmap2);
LayerDrawable la = new LayerDrawable(array);
// 其中第一個參數為層的索引號,後面的四個參數分別為left、top、right和bottom
la.setLayerInset(0, 0, 0, 0, 0);
la.setLayerInset(1, 20, 20, 20, 20);
image.setImageDrawable(la);
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.