0

bg_repeat.xml:

<?xml version="1.0" encoding="UTF-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/bg_pattern"
android:tileMode="repeat" />

bg_pattern.jpg: bg_pattern.jpg 如果我以纵向模式启动应用程序: 肖像 并且输出正常。

如果在横向模式下启动应用程序,有时输出(在 splashScreen BG 和 Main BG 中)就像: 景观 这种模式下的第二个问题(LandS):我将方向更改为纵向,然后按返回按钮关闭应用程序,它刷新当前活动(通过每次按下 Back btn 1,2 甚至 4 次)(刷新意味着从当前返回到当前活动!)

怎么了?这是一个错误吗?(每两个问题)。顺便说一句,它是我的 splashScreen.java 代码:

public class SplashScreen extends Activity {
private int _splashTime = 2000;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
             WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.splashscreen);

    new Handler().postDelayed(new Thread(){
       @Override
       public void run(){
         Intent mainMenu = new Intent(SplashScreen.this, NextAct.class);
         SplashScreen.this.startActivity(mainMenu);
         SplashScreen.this.finish();
         overridePendingTransition(R.anim.fadein, R.anim.fadeout);
       }
    }, _splashTime);
 }
}

毕竟我说过,我使用customTheme。这是清单 xml 代码:

<activity android:theme="@style/CustomTheme"
        android:label="@string/app_name"
        android:name=".SplashScreen">

这是styles.xml 代码的一部分:

<style name="CustomTheme" parent="@android:style/Theme.Light">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@drawable/bg_repeat</item>
</style>

但不要测试这个新应用程序,不管它有没有问题。

4

1 回答 1

0

不重复背景是一个已知错误,它在 ICS 中部分修复,在 JB 中完全修复。有一种解决方法,您必须将位图包装在布局中,然后在 onCreate 中的代码中设置重复,如下所示:

    parent = (RelativeLayout) findViewById(R.id.parent);
    Bitmap bg = BitmapFactory.decodeResource(this.getResources(), R.drawable.bg_pattern);
    BitmapDrawable patternRepeat = new BitmapDrawable(bg);
    patternRepeat.setTileModeX(Shader.TileMode.REPEAT);
    patternRepeat.setTileModeY(Shader.TileMode.REPEAT);
    parent.setBackgroundDrawable(patternRepeat);
于 2012-09-05T07:17:55.460 回答