2017-03-23 14 views
0

私はxperiaデバイスをテストしています。ここにはタッチナビゲーションボタンがあります。 私のコードは、現在の活動のスクリーンショットをキャプチャし、私は下のナビゲーションボタンを含めたくない、私はそれが私が「スクリーンショットを撮る」を押したときに、私はNavButton隠され、アクティビティがかかるを見ることができ、今ナビゲーションボタンの代わりにActivity left blackを下に表示

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 

を使用して非表示ボリュームをフルスクリーンで表示できますが、保存されたスクリーンショットは空白のままです。何が問題なのでしょうか?以下は出力イメージです!

enter image description here

上記の黒いスペースが左space.Iが、それは以下

を残されたくないですコードです。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_fullscreen); 
    takeScreenshot= (Button) findViewById(R.id.takeScreenshot); 
    Drawable icon= getResources().getDrawable(R.drawable.ic_photo_camera); 
    takeScreenshot.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); 
    takeScreenshot.setOnClickListener(this); 
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 46323); 
    settings= (ImageButton) findViewById(R.id.settings); 
    settings.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    int click=v.getId(); 
    if (click==R.id.takeScreenshot){ 
     isStoragePermissionGranted(); 
     // View rootView = getWindow().getDecorView().findViewById(android.R.id.content); 
    //  RelativeLayout relativeLayout= (RelativeLayout) findViewById(R.id.relativeLayout); 
     View rootView=findViewById(R.id.relativeLayout); 
     takeScreenshot.setVisibility(View.VISIBLE); 
     settings.setVisibility(View.VISIBLE); 
     try{ 
      getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
     }catch (Exception ex){ 
      Log.d(TAG,"Non Navigation button"); 
     } 
     Bitmap bmp=getScreenShot(rootView); 
     store(bmp); 
     takeScreenshot.setVisibility(View.VISIBLE); 
     settings.setVisibility(View.VISIBLE); 

     Log.d(TAG, Environment.getDataDirectory().toString()); 
    } 
    if (click==R.id.settings){ 

    } 
} 
public static Bitmap getScreenShot(View view) { 
    View screenView = view.getRootView(); 
    screenView.setDrawingCacheEnabled(true); 
    Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache()); 
    screenView.setDrawingCacheEnabled(false); 
    return bitmap; 
} 
public void store(Bitmap bm){ 
    String dirPath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/iScreenShot"; 
    File dir = new File(Environment.getExternalStorageDirectory().toString()+"/iScreenShot"); 
    if(!dir.exists()) 
     dir.mkdirs(); 
    String tempFileName="shot"; 
    String extension=".png"; 
    int num=0; 
    File file=new File(dirPath,tempFileName+num+extension); 
    while (file.exists()){ 
     num++; 
     file=new File(dirPath,tempFileName+num+extension); 
    } 
    try { 
     FileOutputStream fOut = new FileOutputStream(file); 
     // bm.compress(Bitmap.CompressFormat.PNG, 85, fOut); 
     bm.compress(Bitmap.CompressFormat.PNG,100,fOut); 
     fOut.flush(); 
     fOut.close(); 
     Toast.makeText(this, "Saved in gallery", Toast.LENGTH_SHORT).show(); 
     try { 
      MediaPlayer mMediaPlayer = new MediaPlayer(); 
      mMediaPlayer = MediaPlayer.create(this, R.raw.shutter); 
      mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      mMediaPlayer.setLooping(false); 
      mMediaPlayer.start(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     MediaScannerConnection.scanFile(this, new String[] { Environment.getExternalStorageDirectory().toString()+"/iScreenShot/"+tempFileName+num+extension }, null, 
       new MediaScannerConnection.OnScanCompletedListener() { 
        public void onScanCompleted(String path, Uri uri) { 
         Log.i("ExternalStorage", "Scanned " + path + ":"); 
         Log.i("ExternalStorage", "-> uri=" + uri); 
        } 
       }); 

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

答えて

0

使用setContentView

public void setFullScreenView() {//Hiding status/navigation bar 
     if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { 
      View v = this.getWindow().getDecorView(); 
      v.setSystemUiVisibility(View.GONE); 
     } else if (Build.VERSION.SDK_INT >= 19) { 
      View decorView = getWindow().getDecorView(); 
      decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE 
        | View.SYSTEM_UI_FLAG_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
     } 
     setContentView(R.layout.main_activity); 
    } 

前に、ステータスバーだけでなく、ナビゲーションバーを非表示にするには、この方法は、次にスクリーンショット

+0

のためのあなたの方法このコードを呼び出すだけで表示のようなナビゲーションボタンを非表示にします。 INVISIBLE、VIEW.GONEのようなナビゲーションボタンが必要なので、コンテンツが下に来るか、スペースを取らないようにしてください。 –

+0

もう一つの問題は、表示/タッチスクリーンをクリックした後初めて初めて隠れることです。 –

関連する問題