这个问题扩展了这个线程如何在一段延迟时间之后隐藏ActionBar和NavigationBar?
这适用于我的应用程序。但它只运行一次。如何让它继续执行直到按下按钮(后退按钮)
顺便说一下,当你查看照片时,这是一个photoViewer应用程序(部分),就像Android上的Gmail应用程序一样。
Update1:我实际上有一个touchListener来显示()并再次隐藏()动作栏。所以我想要的是当我处于imageView布局时,actionBar将在3000ms内消失,然后我点击show(),然后在3000ms后它将再次消失。再次,就像Gmail Android应用程序从电子邮件加载图片
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); // overlay mode
setContentView(R.layout.fullscreen_image);
ActionBar actionBar = getActionBar();
actionBar.setCustomView(R.layout.actionbar_top);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
// time delay to hide actionBar
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
// DO DELAYED STUFF
getActionBar().hide();
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
}, 3000); // e.g. 3000 milliseconds
....
Button back = (Button)findViewById(R.id.btnBack);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
答案 0 :(得分:0)
我认为你应该将timer-thread的创建移动到你的onClick(),这样每次点击时,都会启动一个新的计时器。
答案 1 :(得分:0)
将您的计时器放在OnCreate中可确保它只运行一次。 如果你想让它在每个地方运行,用户可以旋转屏幕,暂停或者其他什么,把它放在onResume中。但是,正如popovitsj所暗示的那样,点击onClick很可能是你想要的