[英]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
改变颜色。
因此,如果您单击Button1
, Button2
, Button3
, Button4
并使用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>
您需要做的是将信息传递给第二个活动,提取并使用这些信息。
使用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.