接上一篇文章:Android實(shí)現(xiàn)圖片區(qū)域裁剪功能
上一篇文章提及了通過(guò)調(diào)用系統(tǒng)相冊(cè)或拍照來(lái)實(shí)現(xiàn)圖片的縮放\裁剪。不過(guò)這對(duì)于筆者項(xiàng)目的要求同樣不適合,筆者需要的是通過(guò)對(duì)手機(jī)屏幕整個(gè)進(jìn)行一個(gè)截圖,并對(duì)這個(gè)截圖進(jìn)行裁剪操作。
依靠系統(tǒng)功能確實(shí)可以實(shí)現(xiàn)圖片的裁剪,但是不夠靈活。這里筆者提供一種較為靈活的做法。
但是這種做法的用戶(hù)體驗(yàn)沒(méi)有上篇文章的好,至于使用何種方法,讀者應(yīng)該自己衡量。
同樣,我們先看實(shí)際效果圖。
這里展示的是筆者項(xiàng)目的一小部分(閱讀器):
我們點(diǎn)擊左下角的剪切按鈕
我們通過(guò)紅色邊框的四個(gè)角來(lái)控制裁剪的大小,移動(dòng)紅色框體來(lái)控制裁剪的位置區(qū)域。
接下來(lái)我們看看源碼的實(shí)現(xiàn):
首先點(diǎn)擊剪切按鈕的時(shí)候,我們應(yīng)該生成一個(gè)Bitmap對(duì)象,傳遞給另一個(gè)Activty處理
具體做法如下:
cutP.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //將一些按鈕隱藏 cutP.setVisibility(View.INVISIBLE); mTopBarSwitcher.setVisibility(View.INVISIBLE); mPageSlider.setVisibility(View.INVISIBLE); back.setVisibility(View.INVISIBLE); mPageNumberView.setVisibility(View.INVISIBLE); View view = MuPDFActivity.this.getWindow().getDecorView(); if (false == view.isDrawingCacheEnabled()) { view.setDrawingCacheEnabled(true); } Bitmap bitmap = view.getDrawingCache(); ImageView imgv = new ImageView(MuPDFActivity.this); imgv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT-200)); imgv.setImageBitmap(bitmap); backBitmap = bitmap; //傳遞給另一個(gè)Activity進(jìn)行裁剪 Intent intent = new Intent(); intent.setClass(MuPDFActivity.this, CutActivity.class); startActivity(intent); } });