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