我想在应用程序启动时从设备上的PNG文件显示启动画面x秒。
我在主题中尝试了android:windowBackground但是无法从文件中获取并且只能预定义Drawable
该文件可能随时更改,因此在下次应用启动时,它会有所不同。
答案 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>
通过..
在启动画面活动中访问此ImageViewImageView 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>