在我项目的所有活动中,我都隐藏了状态栏,并做了许多与活动有关的事情(我的所有活动都具有共同点)。我准备了隐藏状态栏的功能:
void hideStatusBar()
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
我如何在我拥有的每个活动中执行此功能(而不仅仅是此一项),而又不将该功能复制粘贴到每个活动中(以免违反DRY)?
答案 0 :(得分:1)
您可以将其创建为静态实用程序方法。
public final class ActivityUtils {
private ActivityUtils() {}
public static void hideStatusBar(final Activity activity) {
activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
activity.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
该活动的使用方式类似于ActivityUtils.hideStatusBar(this)
或者,您可以将此方法签名提取到接口,然后将此逻辑注入到您的活动中。如果您希望某些活动使用略微不同的状态隐藏版本,这将很有帮助。
public interface StatusBarHider {
void hideStatusBar(final Activity activity);
}
public class DefaultStatusBarHider implements StatusBarHider {
@Override
public void hideStatusBar(final Activity activity) {
activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
activity.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
// ex; Possibly Guice or Dagger for injection
public class MainActivity extends Activity {
@Inject
private StatusBarHider hider;
...
}
答案 1 :(得分:0)
如果所有更改都与活动的视觉效果有关,则可以在style.xml中指定AppTheme中的所有内容
例如,要隐藏状态栏,请使用:
<item name="android:windowActionBar">false</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
然后,使用您主题的所有活动都将保持不变
答案 2 :(得分:0)
@Autowired
private EmployeeDAO employeeDAO;