2017-05-30 5 views
-4

Androidスタジオでアプリを作成しようとしています。機能の1つは、ボタンを押すとスクリーンショットが撮られ、ギャラリーにエクスポートされるということです。私はボタンが画像に含まれることを望んでいないので、ボタンが画面のボトムに置かれるか、別の方法があるので、特定の領域のスクリーンショットを取ることができるかどうか疑問に思っています。ボタンクリックのアプリでは、特定の領域のスクリーンショットを取り、ギャラリーにエクスポートする必要があります

+0

を参照してください:https://stackoverflow.com/questions/5536066/convert-view-to-bitmap-on-android –

+0

質問があれば私のansと私に尋ねてください –

+0

可能な複製[ビューをAndroidのビットマップに変換する](https://stackoverflow.com/questions/5536066/convert-view-to-bitmap-on-android) –

答えて

0

この

は、簡単な方法があります許可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 


     tv.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      tv.setVisibilty(View.GONE); 
      Bitmap screenShot = TakeScreenShot(layout_id); 
      MediaStore.Images.Media.insertImage(
        getContentResolver(), 
        screenShot, 
        "Image", 
        "Captured ScreenShot"); 
      Toast.makeText(getApplicationContext(), "Screen Captured.",Toast.LENGTH_SHORT).show(); 


     } 
    }); 




public Bitmap TakeScreenShot(View rootView) 
{ 
    Bitmap bitmap = Bitmap.createBitmap(rootView.getWidth(),rootView.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    rootView.draw(canvas); 
    return bitmap; 

} 
0

を追加し、ボタンの視認性が前に。あなたがここに例をチェックしてスクリーンショットを撮影した隠してみてください: -

public class MainActivity extends AppCompatActivity { 
Button screenshot_btn; 
    Bitmap mbitmap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     screenshot_btn= (Button) findViewById(R.id.screenshot_btn); 

     screenshot_btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       screenshot_btn.setVisibility(View.GONE); 
       mbitmap = takeScreenShot(getWindow().getDecorView().getRootView()); 
       SaveImage(mbitmap, "MyScreenShot"); 
      } 
     }); 

    } 

    //************************** screenShot ************************************ 
    public Bitmap takeScreenShot(View view) { 
     Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), 
       view.getHeight(), Bitmap.Config.ARGB_8888); 
     Canvas canvas = new Canvas(bitmap); 
     view.draw(canvas); 
     return bitmap; 
    } 


    // ************************** Save Image in Internal Stroage ************************** 

    private void SaveImage(Bitmap finalBitmap, String imgName) { 

     String root = Environment.getExternalStorageDirectory().toString(); 
     File myDir = new File(root + "/screenshot"); 
     myDir.mkdirs(); 

     String fname = imgName + ".jpg"; 
     File file = new File(myDir, fname); 
     if (file.exists()) file.delete(); 
     try { 
      FileOutputStream out = new FileOutputStream(file); 
      finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
      out.flush(); 
      out.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 
関連する問題