如何在其他活动中通过按钮意图使可绘制的更改颜色?

时间:2018-09-09 17:41:17

标签: java android

我是Android Studio和Java的新手,已经从事了一段时间的项目,并且希望获得有关我似乎找不到任何教程或信息的问题的帮助。 我正在运行 Windows 7专业版的计算机上使用android Studio版本3.1.4

我无法将我的所有按钮和所有可绘制对象都放到MainActivity上,因此我希望将MainActivity上的所有按钮以及我的所有可绘制对象都放在活动2中。

我的问题是,当我单击MainActivity中的任何按钮时,无法确定如何在第二个活动中使可绘制对象更改颜色。

我的圆形画图是svg格式,直径为10mm 我已将3个按钮的所有相关代码粘贴到MainActivity上可与3 svg drawable一起使用的位置,以便您可以看到它在虚拟设备或通过USB电缆连接的移动设备上的工作方式。 我还在主活动中添加了一个按钮,将您带到活动2,在其中放置了3个可绘制对象,我需要用它与主活动相同的方式进行工作,但第一个活动中的按钮会对其进行更改。 在我的项目中,我有很多按钮。单击每个按钮都会根据我的程序更改其相关SVG可绘制图形的颜色。可绘制对象是黑色的。每次单击都会使它们按此顺序更改为下一个颜色。白色,黄色,橙色,红色,然后变回黑色

所以我需要做的是在主活动中具有按钮,在活动2中具有可绘制对象。 如果在ctivity_main.xml中单击了按钮1(属性为btn1),我希望传递到Activity2的按钮信息使具有属性iv1的可绘制对象更改颜色。

因此,如果您要单击Button1Button2Button3Button4,然后使用转到activity2按钮(属性btn), Activity2从左到右将是白色,黄色,白色。

在此先感谢您的帮助。

<package com.example.chucky.svg;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;


public class MainActivity extends AppCompatActivity {

    private Button button;

    int[] colors = {0xffffffff, 0xffffff00, 0xffff6600, 0xffff0000, 0xff000000};
    int counter1 = -1;
    int counter2 = -1;
    int counter3 = -1;

    ImageView iv1;
    ImageView iv2;
    ImageView iv3;

    Button btn;
    Button btn1;
    Button btn2;
    Button btn3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openActivity2();
            }
        });


        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn2);
        btn3 = (Button) findViewById(R.id.btn3);

        iv1 = (ImageView) findViewById(R.id.iv1);
        iv2 = (ImageView) findViewById(R.id.iv2);
        iv3 = (ImageView) findViewById(R.id.iv3);

        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                counter3++;
                if (counter3> colors.length -1){
                    counter3 = 0;
                }
                iv3.setColorFilter(colors[counter3]);
            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                counter2++;
                if (counter2> colors.length - 1){
                    counter2 = 0;
                }
                iv2.setColorFilter(colors[counter2]);
            }
        });


        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                counter1++;
                if (counter1> colors.length - 1){
                    counter1 = 0;
                }
                iv1.setColorFilter(colors[counter1]);
            }
        });
    }
    public void openActivity2() {
        Intent intent = new Intent(this, Activity2.class);
        startActivity(intent);
    }
}

Activity2

package com.example.chucky.svg;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;

    public class Activity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
    }
    }

Activity_main xml

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
    android:id="@+id/btn1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text=" Button 1"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.091"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.498" />

<Button
    android:id="@+id/btn2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="Button 2"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.501"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.498" />

<Button
    android:id="@+id/btn3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="Button 3"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.895"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.498" />

<Button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="Go to Activity 2"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.087" />

<ImageView
    android:id="@+id/iv1"
    android:layout_width="56dp"
    android:layout_height="50dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.137"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.296"
    app:srcCompat="@drawable/ic_circle_e" />

<ImageView
    android:id="@+id/iv2"
    android:layout_width="56dp"
    android:layout_height="50dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.296"
    app:srcCompat="@drawable/ic_circle_e" />

<ImageView
    android:id="@+id/iv3"
    android:layout_width="56dp"
    android:layout_height="50dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.852"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.296"
    app:srcCompat="@drawable/ic_circle_e" />

</android.support.constraint.ConstraintLayout>

activity_2 xml

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Activity2">

<ImageView
    android:id="@+id/iv3"
    android:layout_width="56dp"
    android:layout_height="50dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.852"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.296"
    app:srcCompat="@drawable/ic_circle_e" />

<ImageView
    android:id="@+id/iv2"
    android:layout_width="56dp"
    android:layout_height="50dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.296"
    app:srcCompat="@drawable/ic_circle_e" />

<ImageView
    android:id="@+id/iv1"
    android:layout_width="56dp"
    android:layout_height="50dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.137"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.296"
    app:srcCompat="@drawable/ic_circle_e" />

<TextView
    android:id="@+id/tv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="Activity2"
    android:textSize="20sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

Main Activity

Activity 2

3 个答案:

答案 0 :(得分:0)

您需要做的是将信息传递给第二个活动,提取并利用该信息。

有了Intent Extra,您的目标就可以实现,就像这样:

首先,在第二个活动中声明一个唯一的常量变量,该变量将保存整个通信中的信息。

public static final String EXTRA_USER_ID = "userId";

现在,FirstActivity正在发送信息:

 String changeColorToBlack = " black"
 Intent intent = new Intent(firstActivty.this, SecondActivity.class);
        intent.putExtra(SecondActivity.EXTRA_COLOR_KEY, changeColorToBlack);
                startActivity(intent);

SecondActivity可以检索这样的信息

 String colorIdKey = getIntent().getStringExtra(EXTRA_COLOR_ID);
        if (colorIdKey == null) {
            throw new IllegalArgumentException("Must pass EXTRA_COLOR_KEY");
        }
//colorIdKey is your color

仅此而已。您只需要一个Intent Extra,即可在2个活动之间传递信息

答案 1 :(得分:0)

激活所需的最简单方法是将颜色代码作为参数传递给第二个活动

在Activity1.class中执行

  

public void openActivity2(){

Intent intent = new Intent(this, Activity2.class);
     

//将颜色值作为捆绑商品传递

intent.putExtra("color1", <color_code1>);  
intent.putExtra("color2", <color_code2>);
intent.putExtra("color3", <color_code3>);

startActivity(intent); }

在Activity2.class中

public class Activity2 extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_2);
    Bundle extras = getIntent().getExtras();

    if(extras != null){

    String color1 = extras.getString("color1");
    String color2 = extras.getString("color2");
    String color3 = extras.getString("color3");

    // set values to image views here
     }
   }
}

此处的官方文档:https://developer.android.com/guide/components/activities/parcelables-and-bundles#kotlin

答案 2 :(得分:0)

  

您在整数数组int[] colors中具有颜色代码,并且在counter变量中选择了位置。顺便说一句将颜色设置为imageview |通过意图传递它。

尝试以下代码:

 Intent i = new Intent(MainActivity.this,Activity2.class);
    i.putExtra("COLOR_1",colors[counter1]);
    i.putExtra("COLOR_2",colors[counter2]);
    i.putExtra("COLOR_3",colors[counter3]);
    startActivity(i);

然后在Activity2中获取意图值并将其设置为对应的ImageView

将此代码添加到onCreate()

Bundle bundle = getIntent().getExtras();
    if(bundle != null)
    {
        iv1.setColorFilter(bundle.getInt("COLOR_1",0));
        iv2.setColorFilter(bundle.getInt("COLOR_2",0));
        iv3.setColorFilter(bundle.getInt("COLOR_3",0));
    }