Форум программистов, компьютерный форум CyberForum.ru

Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Symba
5 / 5 / 3
Регистрация: 10.03.2011
Сообщений: 82
17.07.2013, 13:38     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #1
покажите на примере пожалуйста, как сохранить текущий цвет фона при повороте экрана
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package ru.pm.svetofor;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.content.Intent;
import android.content.res.Configuration;
 
public class MainActivity extends Activity{
    public TextView tvInfo;
    public RelativeLayout relativeLayout;
    public LinearLayout linerlayout;
    
    
    @Override
    protected void onCreate(Bundle outState) {
        super.onCreate(outState);
        setContentView(R.layout.activity_main);
        tvInfo = (TextView)findViewById(R.id.textView1);
        if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
            {
                relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout);
            }
        else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
                {
                    linerlayout = (LinearLayout)findViewById(R.id.linerlayout);
                }
}
/****************************************************************************/
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //сохранить в Bundle
            
      }
    
    @Override
    protected void onRestoreInstanceState(Bundle outState) {
        super.onRestoreInstanceState(outState);
        //достать из Bundle
            
      }
/***********************************************************************/
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public void btnWhite_Click(View v){
        tvInfo.setText(R.string.white);
         if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
            {
             relativeLayout.setBackgroundResource(R.color.whiteColor);
            }
        else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
                {
            linerlayout.setBackgroundResource(R.color.whiteColor);
                }
        
    }
    public void btnGreen_Click(View v){
        tvInfo.setText(R.string.green);
        if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
        {
         relativeLayout.setBackgroundResource(R.color.greenColor);
        }
    else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
            {
        linerlayout.setBackgroundResource(R.color.greenColor);
            }
    }
    public void btnRed_Click(View v){
        tvInfo.setText(R.string.red);
        if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
        {
         relativeLayout.setBackgroundResource(R.color.redColor);
        }
    else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
            {
        linerlayout.setBackgroundResource(R.color.redColor);
            }
    }
    public void btnYellow_Click(View v){
        tvInfo.setText(R.string.yellow);
        if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
        {
         relativeLayout.setBackgroundResource(R.color.yellowColor);
        }
    else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
            {
        linerlayout.setBackgroundResource(R.color.yellowColor);
            }
    }
    public void btnAbout_Click(View v){
        Intent intent = new Intent(MainActivity.this, AboutActivity.class);
        startActivity(intent);
    }
    
}
Спасибо!
P.S.Только начал изучать андроид
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2013, 13:38     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ)
Посмотрите здесь:

Анимация при повороте экрана - в своем приложении Android
Android Ошибка при повороте экрана
Сохранение объекта при повороте экрана Android
Android Непонятное поведение при повороте экрана
При сдвиге основного экрана Activity карта становится черного цвета Android
При повороте экрана, сохранить 3 объекта(фрагменты) и потом восстановить их Android
Android Запрет выполнения onCreate при повороте экрана
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wenceslaus
Android Developer
 Аватар для Wenceslaus
129 / 129 / 4
Регистрация: 05.07.2013
Сообщений: 205
17.07.2013, 14:06     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #2
А не проще запретить пересоздание Activity?
XML
1
android:configChanges="keyboardHidden|orientation|screenSize"
Symba
5 / 5 / 3
Регистрация: 10.03.2011
Сообщений: 82
17.07.2013, 14:56  [ТС]     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #3
Цитата Сообщение от Wenceslaus Посмотреть сообщение
А не проще запретить пересоздание Activity?
XML
1
android:configChanges="keyboardHidden|orientation|screenSize"
тогда смена на ландшафтную разметку не происходит =(
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
17.07.2013, 15:10     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #4
Цитата Сообщение от Symba Посмотреть сообщение
тогда смена на ландшафтную разметку не происходит =(
Потому что у вас в коде написано, что если портрет, то грузит
Java
1
relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout);
, а если ландшафт, то другое.
Можете создать один layout, а в манифесте указать
Цитата Сообщение от Wenceslaus Посмотреть сообщение
android:configChanges="keyboardHidden|orientation|screenSize"
Wenceslaus
Android Developer
 Аватар для Wenceslaus
129 / 129 / 4
Регистрация: 05.07.2013
Сообщений: 205
17.07.2013, 15:12     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #5
Да, логично, не вчитался в код..
Тогда так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int color;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //определение всех view'шек
        if (savedInstanceState!=null && savedInstanceState.containsKey("color")) 
            color = savedInstanceState.get("color"); //или сразу же установка цвета
    }
 
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putInt("color", color);
        super.onSaveInstanceState(outState);
    }
Symba
5 / 5 / 3
Регистрация: 10.03.2011
Сообщений: 82
17.07.2013, 16:40  [ТС]     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #6
Цитата Сообщение от Wenceslaus Посмотреть сообщение
outState.putInt("color", color);
подскажите, как этот самый color получить?
в main.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativelayout"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/redColor"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <Button
        android:id="@+id/btnRed"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="108dp"
        android:onClick="btnRed_Click"
        android:text="@string/red" />
 
    <Button
        android:id="@+id/btnYellow"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btnRed"
        android:layout_below="@+id/btnRed"
        android:onClick="btnYellow_Click"
        android:text="@string/yellow" />
 
    <Button
        android:id="@+id/btnGreen"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btnYellow"
        android:layout_below="@+id/btnYellow"
        android:onClick="btnGreen_Click"
        android:text="@string/green" />
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignLeft="@+id/btnGreen"
        android:layout_alignRight="@+id/btnGreen"
        android:layout_below="@+id/btnGreen"
        android:layout_marginTop="69dp"
        android:gravity="center_horizontal"
        android:text="@string/red"
        android:textSize="@dimen/activity_horizontal_margin"
        android:textStyle="bold" />
 
    <Button
        android:id="@+id/btnWhite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/btnRed"
        android:layout_alignLeft="@+id/btnRed"
        android:layout_alignRight="@+id/btnRed"
        android:layout_marginBottom="50dp"
        android:onClick="btnWhite_Click"
        android:text="@string/white" />
 
    <Button
        android:id="@+id/btnAbout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:onClick="btnAbout_Click"
        android:text="@string/about" />
 
</RelativeLayout>
в ресурсах
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <string name="app_name">svetofor</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="red">КРАСНЫЙ</string>
    <string name="yellow">ЖЕЛТЫЙ</string>
    <string name="white">БЕЛЫЙ</string>
    <string name="green">ЗЕЛЕНЫЙ</string>
    <string name="about">О программе</string>
    <color name="greenColor">#ff00ff00</color>
    <color name="redColor">#ffff0000</color>
    <color name="yellowColor">#ffff00</color>
    <color name="whiteColor">#ffffff</color>
    <string name="about_text">about</string>
    <string name="about_title">О программе</string>
 
</resources>
Добавлено через 10 минут
в ландшафтном
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linerlayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/redColor" >
 
        <TableLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="vertical"
            android:shrinkColumns="*"
            android:stretchColumns="*" >
 
            <TableRow>
 
                <Button
                    android:id="@+id/btnAbout"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:onClick="btnAbout_Click"
                    android:text="@string/about" />
            </TableRow>
 
            <TableRow>
 
                <Button
                    android:id="@+id/btnWhite"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:onClick="btnWhite_Click"
                    android:text="@string/white" />
 
                <Button
                    android:id="@+id/btnRed"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:onClick="btnRed_Click"
                    android:text="@string/red" />
            </TableRow>
 
            <TableRow>
 
                <Button
                    android:id="@+id/btnYellow"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:onClick="btnYellow_Click"
                    android:text="@string/yellow" />
 
                <Button
                    android:id="@+id/btnGreen"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:onClick="btnGreen_Click"
                    android:text="@string/green" />
            </TableRow>
 
            <TableRow
                android:gravity="center" >
 
                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_gravity="center"
                    android:gravity="center_horizontal"
                    android:text="@string/red"
                    android:textSize="@dimen/activity_horizontal_margin"
                    android:textStyle="bold" />
 
            </TableRow>
        </TableLayout>
</LinearLayout>
Wenceslaus
Android Developer
 Аватар для Wenceslaus
129 / 129 / 4
Регистрация: 05.07.2013
Сообщений: 205
17.07.2013, 16:50     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #7
Что значит получить? Получить из ресурсов?
Java
1
int colorGreen = getResources().getColor(R.color.greenColor); //зелёный
Symba
5 / 5 / 3
Регистрация: 10.03.2011
Сообщений: 82
18.07.2013, 10:32  [ТС]     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #8
Цитата Сообщение от Wenceslaus Посмотреть сообщение
Что значит получить? Получить из ресурсов?
Java
1
int colorGreen = getResources().getColor(R.color.greenColor); //зелёный
получить текущий, вот например я изменил его нажатием кнопки, решил перевернуть девайс, чтоб он остался таким же, а не менялся на изначальный.
КАК Я СЕБЕ ВСЕ ПРЕДСТАВЛЯЮ (поправьте, если ошибаюсь) Есть член класса Layout - linerlayout, у него есть свойство background, если я правильно понимаю, мне нужно сохранить это свойство до поворота в переменную класса Bundle (то есть я полагаю, в его свойство), после поворота взять это значение.
Wenceslaus
Android Developer
 Аватар для Wenceslaus
129 / 129 / 4
Регистрация: 05.07.2013
Сообщений: 205
18.07.2013, 10:52     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #9
Цитата Сообщение от Symba Посмотреть сообщение
получить текущий
Текущий получить можно только Drawable. Хотя для API 11 и выше можно ухитриться:
Java
1
2
3
Drawable background = view.getBackground();
if (background instanceof ColorDrawable)
    color = ((ColorDrawable) background).getColor();
Symba
5 / 5 / 3
Регистрация: 10.03.2011
Сообщений: 82
18.07.2013, 10:54  [ТС]     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #10
ну логика та моя хоть верна? я правильно решаю задачу?
Wenceslaus
Android Developer
 Аватар для Wenceslaus
129 / 129 / 4
Регистрация: 05.07.2013
Сообщений: 205
18.07.2013, 11:01     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #11
Цитата Сообщение от Symba Посмотреть сообщение
я правильно решаю задачу?
Правильно было бы запретить пересоздание Activity, как я советовал в начале и создать один layout для двух ориентаций, как советовал Digetix.
Symba
5 / 5 / 3
Регистрация: 10.03.2011
Сообщений: 82
19.07.2013, 14:13  [ТС]     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #12
цитирую пользователя Nomad androidforums ru.
надо в Activity.onSaveInstanceState() в Bundle savedInstance пихать члены класса которые требуют восстановления после поворота девайса, а в Activity.onRestoreInstanceState() вытаскивать их из бандла
кто сможет разъяснить подробнее, как это сделать?
Symba
5 / 5 / 3
Регистрация: 10.03.2011
Сообщений: 82
24.07.2013, 10:32  [ТС]     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #13
пытаюсь сделать так
Java
1
2
3
4
5
6
7
8
9
10
@Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {     
        super.onSaveInstanceState(savedInstanceState);
        TableRow curTr = (TableRow)findViewById(R.id.linerlayout);
        savedInstanceState.putInt("sColor", ((ColorDrawable)curTr.getBackground()).getColor());
    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState){
        super.onRestoreInstanceState(savedInstanceState);
        linerlayout.setBackgroundColor(savedInstanceState.getInt("sColor"));
вылетает при смене ориентации.
лог:
Код
07-24 06:29:04.375: I/dalvikvm(661): Could not find method android.graphics.drawable.ColorDrawable.getColor, referenced from method ru.pm.svetofor.MainActivity.onSaveInstanceState
07-24 06:29:04.375: W/dalvikvm(661): VFY: unable to resolve virtual method 245: Landroid/graphics/drawable/ColorDrawable;.getColor ()I
07-24 06:29:04.405: D/dalvikvm(661): VFY: replacing opcode 0x6e at 0x0014
07-24 06:29:04.405: D/dalvikvm(661): VFY: dead code 0x0017-001b in Lru/pm/svetofor/MainActivity;.onSaveInstanceState (Landroid/os/Bundle;)V
07-24 06:29:15.965: D/AndroidRuntime(661): Shutting down VM
07-24 06:29:15.965: W/dalvikvm(661): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
07-24 06:29:16.005: E/AndroidRuntime(661): FATAL EXCEPTION: main
07-24 06:29:16.005: E/AndroidRuntime(661): java.lang.RuntimeException: Unable to pause activity {ru.pm.svetofor/ru.pm.svetofor.MainActivity}: java.lang.ClassCastException: android.widget.LinearLayout
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3348)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3305)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3786)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.app.ActivityThread.access$2400(ActivityThread.java:125)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.os.Handler.dispatchMessage(Handler.java:99)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.os.Looper.loop(Looper.java:123)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.app.ActivityThread.main(ActivityThread.java:4627)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at java.lang.reflect.Method.invokeNative(Native Method)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at java.lang.reflect.Method.invoke(Method.java:521)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at dalvik.system.NativeStart.main(Native Method)
07-24 06:29:16.005: E/AndroidRuntime(661): Caused by: java.lang.ClassCastException: android.widget.LinearLayout
07-24 06:29:16.005: E/AndroidRuntime(661): 	at ru.pm.svetofor.MainActivity.onSaveInstanceState(MainActivity.java:37)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.app.Activity.performSaveInstanceState(Activity.java:1036)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1180)
07-24 06:29:16.005: E/AndroidRuntime(661): 	at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3330)
07-24 06:29:16.005: E/AndroidRuntime(661): 	... 12 more
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.07.2013, 23:48     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #14
а зачем вы LinearLayout кастите в TableRow?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2013, 09:09     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ)
Еще ссылки по теме:

Изменение цвета при клике по layout Android
Как сохранить состояние хронометра при повороте экрана? Android
Android Ошибка с фрагментами при повороте устройства
Как при повороте экрана показывать видео дальше, а не сначала Android
Android Сохранить imageview при повороте экрана

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Symba
5 / 5 / 3
Регистрация: 10.03.2011
Сообщений: 82
25.07.2013, 09:09  [ТС]     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ) #15
Цитата Сообщение от V0v1k Посмотреть сообщение
а зачем вы LinearLayout кастите в TableRow?
кстати, да) выискал код, сказали рабочий. Можно и так, только все равно вопрос, как вытащить int значение color из activity.getBackground() - Drawable.
Java
1
2
3
4
5
6
7
8
9
@Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {     
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putInt("color", ((ColorDrawable)linerlayout.getBackground()).getColor());
    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState){
        super.onRestoreInstanceState(savedInstanceState);
        linerlayout.setBackgroundColor(savedInstanceState.getInt("color"));
вылетал при повороте потому, что getColor() начиная с API 11 работает, а я пытался использовать на API 10.

Добавлено через 19 минут
только что подсказали на другом форуме ссылку.
написал этот метод - входной параметр LinearLayout, на выходе int значение цвета
Java
1
2
3
4
5
6
7
public int getBgColor (LinearLayout linerlayout){
        ColorDrawable colorDrawable=((ColorDrawable) linerlayout.getBackground());
        Bitmap bitmap= Bitmap.createBitmap(1, 1, Config.ARGB_4444);
        Canvas canvas= new Canvas(bitmap);
        colorDrawable.draw(canvas);   
        int color = bitmap.getPixel(0, 0);  
        return color;
например
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public LinearLayout linerlayout;
public Button btn;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        linerlayout = (LinearLayout)findViewById(R.id.linerlayout);
        btn = (Button)findViewById(R.id.btnSetColor);
        
    }
public void btnSetColor_Click(View v){
        int color = getBgColor(linerlayout);
        btn.setTextColor(color);
    }
Добавлено через 6 минут
в целом методы сохранения-восстановления выглядят теперь у меня так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
 @Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {     
        super.onSaveInstanceState(savedInstanceState);
        int color = getBgColor(linerlayout);
        savedInstanceState.putInt("color", color);       
        savedInstanceState.putString("text",tvInfo.getText().toString());
    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState){
        super.onRestoreInstanceState(savedInstanceState);
        linerlayout.setBackgroundColor(savedInstanceState.getInt("color"));
        tvInfo.setText(savedInstanceState.getString("text"));
    }
Yandex
Объявления
25.07.2013, 09:09     Сохранение цвета Layout при повороте экрана (ПОРТРЕТ->ЛАНДШАФТ)
Ответ Создать тему
Опции темы

Текущее время: 08:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru