2012-02-22 43 views
0

我试图捕捉截图只是活动的表演过后,我现在有一个解决方案,那就是这样的截图后的onCreate

new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       ScreenManager.captureScreen(); 
      } 
     }, 1500); 

将代码放在活动的onCreate,但我有时会发现活动开始非常慢,它超过1500毫米,然后捕获的位图将是空的,我想找到类似的函数或像onShown()或onDraw()回调,但未能找到它。是否有任何回调被称为只是在活动中的所有视图都显示,然后我可以把捕获屏幕代码放在这里,我需要这个,非常感谢。

回答

0

您可以使用下面的代码以快照,

ImageView v1 = (ImageView)findViewById(R.id.mImage); 
v1.setDrawingCacheEnabled(true); 
Bitmap bm = v1.getDrawingCache(); 
+0

对不起,我想你误会我的问题,我知道怎么做的截图,这里的问题是我不能让它只是当显示的活性。但感谢任何方式。 – 2012-02-22 08:02:00

1

,你是否尝试从在onStart或运行的onResume ScreenManager.captureScreen() - 他们的onCreate后调用。如果应用程序进入后台并返回,onResume将被调用,但您需要创建一个布尔值来检查。

活动周期这里图可以帮助:http://developer.android.com/reference/android/app/Activity.html

+0

我已经尝试onStart和onResume,都无法正常工作,因为在那个时候,view-> getWidth()== 0,所以它不能工作,谢谢你。 – 2012-02-22 08:28:36

+0

如何运行AsyncTask来检查if(view.getWidth()!= 0)然后截取屏幕截图? – Tony 2012-02-22 08:39:31

+0

哦,我想我可以试试这个,谢谢tony ~~ – 2012-02-22 08:42:13