繁体   English   中英

如何传递按钮意图在另一个活动中制作可绘制的变色?

[英]how to pass button intent to make drawable change color in another activity?

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

我无法将所有按钮和所有可绘制的内容都放在MainActivity ,所以我想要MainActivity上的所有按钮和Activity 2上的所有可绘制按钮。

我的问题是当我点击MainActivity任何按钮时,我无法弄清楚如何使我的drawable在第二个Activity中改变颜色。

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

因此,我需要做的是有我的主要活动按钮和可绘制在活动2.如果按钮1(属性BTN1)点击在ctivity_main.xml我想传递给按钮的信息Activity2 ,使带属性的可绘制iv1改变颜色。

因此,如果您单击Button1Button2Button3Button4并使用go to activity2按钮(属性btn),则Activity2的drawable将从左到右为白色,黄色,白色。

在此先感谢您的帮助。

<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>

主要活动

活动2

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

使用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来在两个活动之间传递信息

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

在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

您有整数数组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));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM