Ily*_*kin 240 android android-3.0-honeycomb android-actionbar
我需要在我的蜂窝应用程序中实现启动画面.我在activity的onCreate中使用此代码来显示splash:
setContentView(R.layout.splash);
getActionBar().hide();
Run Code Online (Sandbox Code Playgroud)
并且此代码在某段时间后显示主UI:
setContentView(R.layout.main);
getActionBar().show();
Run Code Online (Sandbox Code Playgroud)
但是在调用onCreate并且出现splash 之前,显示操作栏时会有少量时间.
如何让动作栏隐形?
我尝试将主题应用于没有操作栏的活动:
<item name="android:windowActionBar">false</item>
Run Code Online (Sandbox Code Playgroud)
但在这种情况下getActionBar()总是返回null,我发现无法再显示它.
小智 333
设置android:windowActionBar="false"
真正禁用ActionBar但是,正如您所说,getActionBar();
返回null.这解决了:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();
setContentView(R.layout.splash); // be sure you call this AFTER requestFeature
Run Code Online (Sandbox Code Playgroud)
这会创建ActionBar并在有机会显示之前立即隐藏它.
但现在又出现了另一个问题.在放入windowActionBar="false"
主题后,Activity将绘制其正常的Window Title而不是ActionBar.
如果我们试图通过使用一些*.NoTitleBar
股票主题来避免这种情况,或者我们试图放入<item name="android:windowNoTitle">true</item>
我们自己的主题,它将无法工作.
原因是ActionBar 依赖于Window Title来显示自己 - 也就是ActionBar是一个转换后的Window Title.
所以可以帮助我们的技巧是在Activity主题xml中添加一个东西:
<item name="android:windowActionBar">false</item>
<item name="android:windowTitleSize">0dp</item>
Run Code Online (Sandbox Code Playgroud)
这将使窗口标题的高度为零,因此几乎不可见.
在您的情况下,在完成显示启动画面后,您只需拨打电话即可
setContentView(R.layout.main);
getActionBar().show();
Run Code Online (Sandbox Code Playgroud)
你完成了 活动将从没有ActionBar闪烁开始,也不显示Window Title.
ADDON: 如果您多次显示和隐藏ActionBar,可能您已经注意到第一个显示没有动画.从那时起,显示和隐藏都是动画的.如果你想在第一次显示动画时也可以使用:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_ACTION_BAR);
// delaying the hiding of the ActionBar
Handler h = new Handler();
h.post(new Runnable() {
@Override
public void run() {
getActionBar().hide();
}
});
Run Code Online (Sandbox Code Playgroud)
同样的事情可以通过以下方式实现:
protected void onPostResume() {
super.onPostResume();
getActionBar().hide();
Run Code Online (Sandbox Code Playgroud)
但它可能需要一些额外的逻辑来检查这是否是活动的第一次显示.
这个想法是延迟一点ActionBar的隐藏.在某种程度上,我们让ActionBar显示出来,然后立即隐藏它.因此,我们超越了第一个非动画显示,下一个显示将被视为第二,因此它将被动画.
您可能已经猜到,在被延迟操作隐藏之前,可能会看到ActionBar .实际上就是这种情况.大部分时间都没有看到但是,偶尔,你可以看到ActionBar闪烁一瞬间.
无论如何这不是一个漂亮的解决方案,所以我欢迎任何建议.
此外 v7的支持动作条的用户,代码为:
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getSupportActionBar().hide();
Run Code Online (Sandbox Code Playgroud)
小智 37
如果您使用的是ActionBarSherlock,请在Activity中使用Theme.Sherlock.NoActionBar主题
<activity
android:name=".SplashScreenActivity"
android:theme="@style/Theme.Sherlock.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
Lar*_*iro 19
创建两种样式:
<style name="AppThemeNoBar" parent="Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>
<style name="AppThemeBar" parent="Theme.AppCompat.Light">
<item name="android:windowNoTitle">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)
将AppThemeNoBar设置为应用程序主题,将AppThemeBar设置为要显示ActionBar的活动.使用两种样式,在加载视图时,您将看不到操作栏.
检查此链接Android:在查看加载时隐藏操作栏
Abd*_*lah 17
嗨,我有一个简单的解决方案,使用2个主题
启动画面主题(将其添加到清单):
<style name="SplashTheme" parent="@android:style/Theme.Holo.NoActionBar">
<item name="android:windowBackground">@color/red</item>
</style>
普通主题(通过setTheme(R.style.Theme)将其添加到您的活动中):
<style name="Theme" parent="@style/Theme.Holo"> <item name="android:windowBackground">@color/blue</item>
</style>
要支持SDK 10:
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Theme);
super.onCreate(savedInstanceState);
...........
...........
}
Run Code Online (Sandbox Code Playgroud)
S.A*_*san 15
我也试图隐藏Android 2.2上的Action Bar,但这些解决方案都没有奏效.一切都以崩溃告终.我检查了DDMS LOg,它告诉我使用'Theme.AppCompat'.最后我通过改变android:theme="@android:style/Theme.Holo.Light.NoActionBar"
线来解决问题
进入android:theme="@style/Theme.AppCompat.NoActionBar"
并且它工作,但界面是黑暗的.
然后我尝试了android:theme="@style/Theme.AppCompat.Light.NoActionBar"
,终于得到了我想要的东西.
之后,当我在开发者网站上搜索"AppCompat"时,我得到了这个.
所以我认为Android 2.2的解决方案是
<activity
android:name=".MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
抱歉我的英语不好就像永远.
小智 12
对我来说最好的结果是使用ThemeNoTitleBar创建一个活动而没有内容作为启动器.然后这个活动直接呼叫另一个.
当然,如果你想要你可以添加内容到Splash Activity,但在我的情况下,我只是想直接显示应用程序.
表现:
<activity
android:name="com.package.SplashActivity"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
活动:
public class SplashActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//start StartActivity
Intent intent = new Intent(this, StartActivity.class);
startActivity(intent);
finish();
}
Run Code Online (Sandbox Code Playgroud)
}
小智 9
如果您使用一个Activity
包含启动画面,那么您可以在使用时执行此操作SherlockActionBar
getSupportActionBar().hide();
Run Code Online (Sandbox Code Playgroud)
启动画面后,您可以再次显示...
getSupportActionBar().show();
Run Code Online (Sandbox Code Playgroud)
它应该与ActionBar
Android 原生相同.
@Clerics解决方案有效.但这似乎也是谷歌本土应用程序的一个问题:谷歌,游戏商店,谈话.其他大型应用程序,如Skype.
编辑:贝娄解决方案给了我关于api <4.0的actionbarsherlock的问题,原因是setTheme不起作用前冰淇淋三明治
在应用程序或活动代码中的清单中添加以下内容:
android:theme="@style/Theme.NoActionBar"
Run Code Online (Sandbox Code Playgroud)
然后在您的主要活动中:
// Set theme
setTheme(R.style.YOUR_THEME);
getSupportActionBar().setTitle(R.string.title);
// Start regular onCreate()
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Run Code Online (Sandbox Code Playgroud)
最好,最简单
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
小智 6
2015年,使用支持v7库和AppCompat主题,为您的Activity设置此主题.
<style name="AppTheme.AppStyled" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimaryDark">@color/md_indigo_100</item>
<item name="colorPrimary">@color/md_indigo_500</item>
<item name="colorAccent">@color/md_red_500</item>
<item name="android:textColorPrimary">@color/md_white_1000</item>
<item name="android:textColor">@color/md_purple_500</item>
<item name="android:textStyle">bold</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)
因为Splashscreen
你应该使用这一行manifest
而不是使用getActionBar()
<item name="android:windowActionBar">false</item>
Run Code Online (Sandbox Code Playgroud)
一旦 Splash在下面的Activity
主要用途中完成,Activity
或者什么也没有
<item name="android:windowActionBar">true</item>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
299141 次 |
最近记录: |