Android应用程序从设备上的文件启动屏幕

时间:2016-01-25 18:06:34

标签: android android-drawable android-theme

我想在应用程序启动时从设备上的PNG文件显示启动画面x秒。

我在主题中尝试了android:windowBackground但是无法从文件中获取并且只能预定义Drawable

该文件可能随时更改,因此在下次应用启动时,它会有所不同。

3 个答案:

答案 0 :(得分:0)

您可以使用ImageView。 设置比例图像以适合屏幕。 使窗口全屏,没有标题栏。通过这种方式,您可以每次都设置不同的绘图。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@drawable/splashscreen"
 android:orientation="vertical">

<ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/image2"
             />
</LinearLayout>

通过..

在启动画面活动中访问此ImageView
ImageView img = (ImageView) findviewbyId(R.id.imageView);
Bitmap bitmapImage = BitmapFactory.decodeFile(imagePathFromSDCard);
    Drawable drawableImage = new BitmapDrawable(bitmapImage);

    img.setBackgroundDrawable(drawableImage);

答案 1 :(得分:0)

以下是为Splash Screen活动设置计时器的代码。另外,不要忘记在清单中包含活动。

<强> splash_screen.java

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@drawable/splashscreen"
 android:orientation="vertical">

</LinearLayout>

制作布局,全屏,删除操作栏。这是 splash_screen.xml

的代码
UseCookieAuthentication

根据您的需要,在每次启动应用时更改启动画面的图像。 HTH。

答案 2 :(得分:0)

SplashScreen.java

public class SplashScreen extends Activity {
    // Splash screen timer
    private static int SPLASH_TIME_OUT = 3000;
    public static File app_dir;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);
        ContextWrapper c = new ContextWrapper(this);
        app_dir = c.getFilesDir();
        try {
            String pathName = app_dir + "/background.png";
            File f = new File(pathName);
            Drawable d = Drawable.createFromPath(pathName);
            RelativeLayout v = (RelativeLayout) findViewById(R.id.splash_image);
            Bitmap myBitmap = BitmapFactory.decodeFile(f.getAbsolutePath());
            v.setVisibility(View.VISIBLE);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }


        new Handler().postDelayed(new Runnable() {

            /*
             * Showing splash screen with a timer. This will be useful when you
             * want to show case your app logo / company
             */

            @Override
            public void run() {
                Intent i = new Intent(SplashScreen.this, Activity_MainActivity.class);
                startActivity(i);
                finish();
            }
        }, SPLASH_TIME_OUT);
    }

}

然后在我的清单中

<activity
    android:name="com.package.name.SplashScreen"
    android:label="@string/app_name"
    android:screenOrientation="landscape"
    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>

splash_screen.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/splash_image"
    >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:id="@+id/splash_image2" />

</RelativeLayout>