各位Android安卓開發者大家好!^^
接下來,擷取全螢幕畫面的功能只要在Activity(.java)上做編輯控制即可,所以在Layout(.xml)與AndroidManifest.xml都不用特別針對截圖功能做設定。
Activity完整程式碼如下 :
public class MainActivity extends Activity
{
//擷取畫面按鈕
private
Button mBtn;
//截圖的畫面
private
ImageView mImg;
@Override
protected
void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得Button與ImageView元件
mBtn
= (Button) findViewById(R.id.btn);
mImg
= (ImageView) findViewById(R.id.img);
//點擊按鈕觸發
mBtn.setOnClickListener(new
OnClickListener()
{
@Override
public
void onClick(View v)
{
//將截圖Bitmap放入ImageView
mImg.setImageBitmap(getScreenShot());
}
});
}
//將全螢幕畫面轉換成Bitmap
private Bitmap getScreenShot()
{
//藉由View來Cache全螢幕畫面後放入Bitmap
View mView = getWindow().getDecorView();
mView.setDrawingCacheEnabled(true);
mView.buildDrawingCache();
Bitmap mFullBitmap = mView.getDrawingCache();
//取得系統狀態列高度
Rect mRect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(mRect);
int mStatusBarHeight = mRect.top;
//取得手機螢幕長寬尺寸
int mPhoneWidth = getWindowManager().getDefaultDisplay().getWidth();
int mPhoneHeight =
getWindowManager().getDefaultDisplay().getHeight();
//將狀態列的部分移除並建立新的Bitmap
Bitmap mBitmap = Bitmap.createBitmap(mFullBitmap, 0, mStatusBarHeight,
mPhoneWidth, mPhoneHeight - mStatusBarHeight);
//將Cache的畫面清除
mView.destroyDrawingCache();
return mBitmap;
}
}
以上的程式碼帶入後就可以即時擷取螢幕畫面,至於擷取完的畫面Bitmap要怎麼運用就看開發需求而定,例如要儲存、顯示、回傳等各運用方法,大家可以試試看這個截圖機制。
謝謝大家,如有任何問題都可以和小黑人一起交流討論!
☆小黑人☆
請問可以連同狀態列一起截進去嗎0.0
回覆刪除