main code, AndroidCaptureScreen.java
package com.AndroidCaptureScreen; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public class AndroidCaptureScreen extends Activity { Bitmap bmScreen; View screen; EditText EditTextIn; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); screen = (View)findViewById(R.id.screen); Button btnCaptureScreen = (Button)findViewById(R.id.capturescreen); EditTextIn = (EditText)findViewById(R.id.textin); btnCaptureScreen.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub screen.setDrawingCacheEnabled(true); bmScreen = screen.getDrawingCache(); OpenScreenDialog(); }}); } private void OpenScreenDialog(){ AlertDialog.Builder screenDialog = new AlertDialog.Builder(AndroidCaptureScreen.this); screenDialog.setTitle("Captured Screen"); TextView TextOut = new TextView(AndroidCaptureScreen.this); TextOut.setText(EditTextIn.getText().toString()); LayoutParams textOutLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); TextOut.setLayoutParams(textOutLayoutParams); ImageView bmImage = new ImageView(AndroidCaptureScreen.this); bmImage.setImageBitmap(bmScreen); LayoutParams bmImageLayoutParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); bmImage.setLayoutParams(bmImageLayoutParams); LinearLayout dialogLayout = new LinearLayout(AndroidCaptureScreen.this); dialogLayout.setOrientation(LinearLayout.VERTICAL); dialogLayout.addView(TextOut); dialogLayout.addView(bmImage); screenDialog.setView(dialogLayout); screenDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { // do something when the button is clicked public void onClick(DialogInterface arg0, int arg1) { } }); screenDialog.show(); } }
main.xml, the main layout of our activity.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/screen" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/capturescreen" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Capture Screen" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="\nScreen can be captured using: \n\n screen.setDrawingCacheEnabled(true);\n bmScreen = screen.getDrawingCache();\n" /> <EditText android:id="@+id/textin" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
Related Post:
- Create custom dialog using AlertDialog.Builder, by inflating XML
Noted:
- This code capture the first screen only! Read Capture screen with getDrawingCache() repeatly
Thanks so much for this post. I was having trouble getting the custom alert dialog to work, but your example worked perfectly. Very much appreciated.
ReplyDeleteBlair