如何设置所有活动的永久背景?

时间:2016-12-11 16:44:13

标签: java android android-activity

我正在使用以下代码:

Public void xyz(View v) {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), 0);
}

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode){
        case 0:
            data.getDataString();
            if(resultCode == RESULT_OK){
                try {
                    Bitmap bitmap = MediaStore.Images.Media.getBitmap(_activity.getContentResolver(), data.getDataString());
                    RelativeLayout bg = (RelativeLayout) findViewById(R.id.might);
                    Drawable drawable = new BitmapDrawable(getResources(), bitmap);
                    bg.setBackgroundDrawable(drawable);
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch blocke.printStackTrace();
                } catch(IOException e) {
                    // TODO Auto-generated catch blocke.printStackTrace();
                }
            }                   
            break;
    }
}

问题:

  1. 它仅为一个活动设置背景。

  2. onDestroy()方法之后,它会在重新启动时设置默认背景。

3 个答案:

答案 0 :(得分:2)

您可以使用一个MainActivity。然后,使用片段作为屏幕。将您的颜色或背景绘制为MainActivity的布局。但是,请关注所有片段的布局:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00000000"

前两个00用于使背景透明。

答案 1 :(得分:1)

将图像保存到内部存储器(放入onactivityresult)

FileOutputStream outputStream = null;
  try {
 outputStream = openFileOutput("filename.jpg", Context.MODE_PRIVATE);
 // Use the compress method on the BitMap object to write image to the OutputStream
 bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
                    } catch (Exception e) {
                        e.printStackTrace();
                    } finally {
                        try {
                            outputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

//加载图片并设置为背景(onsatrtactivity)

try {
        FileInputStream l = openFileInput("filename.jpg");
        Bitmap A = BitmapFactory.decodeStream(l);
        LinearLayout bg = (LinearLayout) findViewById(R.id.layoutid);
        Drawable drawable = new BitmapDrawable(getResources(), A);
        bg.setBackgroundDrawable(drawable);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

感谢Marcin Jedynak !!!

答案 2 :(得分:0)

Rupinderjeet asnwer是对的。它可以让你在默认背景下工作。

这是一种简单易行的方法。

style.xml

中放置values样式
<style name="DefaultBackgroundTheme" parent="Base.Theme.AppCompat.Light">
    <item name="android:windowBackground">@drawable/splash_bitmap</item> 
</style>

按应用主题更改Base.Theme.AppCompat.Light

您也可以将colorbitmapsdrawables放在此处。

并在您的清单类中更改您的主题

<activity
    android:name="yourActivityName"
    android:theme="@style/DefaultBackgroundTheme" />

希望这会对你有所帮助。