我想将资产管理器与FreeTypeFontGenerator结合使用.
我不想加载fnt文件,因为它们在不同的screenresolutions上显示不同.所以我现在所做的是在每个演员或屏幕上动态生成我的字体.现在我认为最好在游戏启动时生成一次字体并将其加载到资产管理器中.但是AssetManager似乎需要一个带有BitmapFont.class参数的文件名.我想要做的是生成5个不同的bitmapfonts并将这些BitmapFonts加载到assetmanager中,所以我将所有的资源都集中在一个地方,并且可以重用它们.我可以创建那些BitmapFonts,将它们保存在列表中,并将列表提供给每个actor或屏幕,就像我使用assetmanager一样管理我的纹理和音频.但是将资源管理器放在一个地方会更优雅.
那么,有没有办法将使用FreeTypeFontGenerator创建的BitmapFonts加载到assetmanager中?
我写了一个播客音频播放器并包含了音频聚焦原理。
这是我的方法,在媒体播放器的 onPrepared() 方法中调用:
private boolean requestAudioFocus(){
AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);
OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT){
pause();
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
play();
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
Log.d("MYAUDIOSERVICE","Audio Focus lost");
finish();
}
}
};
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
return true;
}
else{ …
Run Code Online (Sandbox Code Playgroud) 我有几种情况,我想以一个动作模式推送多个页面.一种情况是在我的应用程序开始时,我想初始化我的主页并在它上面推一个Splash-Page.我认为这是一种初始化应用程序的简洁方法,因为我的主页面是预先加载的,并且spash页面被推到它上面.当用户关闭启动页面时,我只需弹出启动页面即可完成.目前我在我的应用程序类中执行以下操作:
public App()
{
InitializeComponent();
MainPage mainPage = new MainPage();
SplashPage splashPage = new SplashPage();
MainPage = mainPage;
mainpage.Navigation.PushModalAsync(splashPage,false);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,虽然在Android上一切都按预期工作,但在iOS上显示Mainpage的时间很短,而不是由splash页面覆盖.这看起来不太好,并且对用户来说是令人厌恶的.
我知道,我可以通过其他方式处理上述示例,例如将启动页面设置为主页面,并在用户解除启动页面时将其与另一个页面交换.但我还有其他情况,并不是那么容易,而且前面设计页面堆栈的逻辑恰到好处.
所以,我的问题是,如何将多个页面推送到模态堆栈而不在iOS上显示每个页面的短时间帧.