2015-04-21 3 views
2

Моего приложения весь экран, поэтому я использую это в моем style.xml:Показать строку состояния временно

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">true</item> 
</style> 

Я реализовал уведомление для загрузки. Теперь, как вы показываете строку состояния временно, например, при просмотре приложения, которое показывает прозрачная версия.

-EDIT-

public class UploadService extends IntentService { 
private NotificationManager mNotificationManager; 

public UploadService() { 
    super("UploadService"); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    mNotificationManager.cancel(0); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    Resources resources = getResources(); 
    final Notification uploadNotification = new NotificationCompat.Builder(this) 
      .setTicker(resources.getString(R.string.upload)) 
      .setSmallIcon(android.R.drawable.ic_menu_upload) 
      .setContentTitle(resources.getString(R.string.app_name)) 
      .setContentText(resources.getString(R.string.upload_progress)) 
      .setProgress(0, 0, true) 
      .build(); 


    final Notification failedNotification = new NotificationCompat.Builder(this) 
      .setSmallIcon(android.R.drawable.ic_menu_report_image) 
      .setTicker(resources.getString(R.string.upload_failed)) 
      .setContentTitle(resources.getString(R.string.upload_failed)) 
      .setAutoCancel(true) 
      .build(); 

    mNotificationManager = (NotificationManager) 
      getSystemService(NOTIFICATION_SERVICE); 

    mNotificationManager.notify(0, uploadNotification); 

    ParseFile parseFile = null; 
    boolean success = true; 

    Bundle bundle = intent.getBundleExtra("bundleImage"); 

    String userID = bundle.getString("userID"); 
    ParseUser parseUser = ParseUser.createWithoutData(ParseUser.class, userID); 

    String image = bundle.getString("imagePath"); 
    Uri imageUri = Uri.parse(image); 

    String filename = bundle.getString("imageName"); 

    ByteArrayOutputStream baos; 
    InputStream is; 
    try { 
     baos = new ByteArrayOutputStream(); 
     is = getContentResolver().openInputStream(imageUri); 
     Bitmap bitmap = BitmapFactory.decodeStream(is); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 

     parseFile = new ParseFile(filename, baos.toByteArray()); 
     baos.close(); 
     is.close(); 
    } catch (Exception e) { 
     success = false; 

     mNotificationManager.notify(0, failedNotification); 
    } 

    if (success) { 
     Frames frames = new Frames(); 
     frames.setUploader(parseUser); 
     frames.setFrameFile(parseFile); 
     try { 
      frames.save(); 
     } catch (ParseException e) { 
      mNotificationManager.notify(0, failedNotification); 
     } 
    } 
} 
+0

Для обеспечения целостности приложения вы можете вместо этого использовать пользовательский тост с гравитационным верхом, чтобы сделать необходимый. –

ответ

1

Вы можете переопределить onTouchEvent и просто добавить/очистить FLAG_FULLSCREEN флаг.

public boolean mIsVisible = false; 
... 
... 
@Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    if (event.getAction() == MotionEvent.ACTION_DOWN) 
    { 
    if (mIsVisible) 
     getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    else 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    mIsVisible = !mIsVisible; 
    } 

    return super.onTouchEvent(event); 
} 
+0

что делать, если я использую его в своем сервисе? – Jan

+0

У вашего сервиса не будет указателя на вашу активность. Но вы можете отправить сообщение из своей службы в свою активность, когда отображать/скрывать строку состояния. В своем классе Activity вы можете реализовать скрытие/отображение строки состояния, когда вы получаете сообщение от вашей Службы. –

+0

вы можете сделать это по намерениям трансляции? – Jan

Смежные вопросы