我有一个应用程序,它有一个启动屏幕,然后是主活动,其中有一些TextViews。
我使用的字体家族“aladin”,我已经选择了从 * 属性〉字体家族〉更多字体... *。
问题是,当我启动我的应用程序时,启动屏幕正确显示,但当我的主要活动跟随时,在一毫秒内你可以看到我的TextView中的字体从“默认”跳到阿拉丁。
换句话说,似乎阿拉丁字体渲染/加载的时间太长了。
我该怎么做?
我已经尝试过将文本大小从sp改为dp,但这并不能解决我的问题。
阿拉丁字体应该立即出现,而不是一毫秒后,它只是不好看。
先谢谢你了。
<TextView
android:id="@+id/textViewItem"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:layout_marginBottom="0dp"
android:fontFamily="@font/aladin"
android:gravity="center|center_horizontal"
android:textColor="#000000"
android:textSize="26sp" />
**编辑:**这里是我的AndroidManifest.xml的一部分:
<activity
android:name=".SplashActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:windowSoftInputMode="adjustPan"
android:label="@string/app_name">
这是我的部分SplashActivity.java:
public class SplashActivity extends AppCompatActivity {
private Handler mHandler;
private Runnable mRunnable;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
mRunnable = new Runnable() {
@Override
public void run() {
startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
}
};
mHandler=new Handler();
mHandler.postDelayed(mRunnable, 1500);
}
@Override
protected void onDestroy (){
super.onDestroy();
if(mHandler!=null && mRunnable !=null)
mHandler.removeCallbacks(mRunnable);
}
}
2条答案
按热度按时间k75qkfdt1#
我也遇到过类似的问题;当应用程序启动时,文本会以默认字体显示几分之一秒,然后会以自定义字体重新绘制。这可能不会困扰大多数用户,但它肯定是显而易见的。
我还发现,一旦加载了自定义字体,随后的文本就会在不先显示默认字体的情况下绘制出来。
所以,我的工作方式是在启动画面显示时加载自定义字体。首先,准备自定义字体。
然后在启动画面的布局中,添加一个没有文本的TextView。这将加载自定义字体,当主屏幕显示时,自定义字体将准备就绪。
yzckvree2#
一些字体的大小很大,所以它们需要一些时间来加载,即几毫秒,有一个简单的解决方案是通过创建Typeface类的示例,在它们出现在UI中之前以编程方式加载字体:例如,如果你要使用一种名为“aladin”的特定字体,请执行以下操作:
现在,您可以避免从文件加载自定义字体时发生的延迟。这是因为字体由字体提供程序下载和缓存,因此在需要时可以更快地访问它。
希望这已经解决了你的问题:)