http://dean-android.blogspot.tw/2015/01/android_27.html

 

 

 

 

 

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要怎麼運用就看開發需求而定,例如要儲存、顯示、回傳等各運用方法,大家可以試試看這個截圖機制。


小黑人範例畫面如下 :

 

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(1) 人氣()