使用intent设置图像视图颜色(另一个活动)



首先,我的目标是在用户单击另一个活动中的颜色选项时,在一个活动中将imageview背景颜色设置为。但我不知道如何使用意图。也许我需要学习更多。

这是我在第一次活动中的代码

public class Games1 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.games1);
    ImageView wire1 = (ImageView)findViewById(R.id.imageView1);
    ImageView wire2 = (ImageView)findViewById(R.id.imageView2);
    ImageView wire3 = (ImageView)findViewById(R.id.imageView3);
    ImageView wire4 = (ImageView)findViewById(R.id.imageView4);
    ImageView wire5 = (ImageView)findViewById(R.id.imageView5);
    ImageView wire6 = (ImageView)findViewById(R.id.imageView6);
    ImageView wire7 = (ImageView)findViewById(R.id.imageView7);
    ImageView wire8 = (ImageView)findViewById(R.id.imageView8);
    wire1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();


        }
    });
    wire2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    wire3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    wire4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    wire5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    wire6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    wire7.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    wire8.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });


}

这是我第二次活动的代码(用户选择颜色)

public class SelectColor extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.selectcolor);
    ImageView blue = (ImageView)findViewById(R.id.blue);
    ImageView orange = (ImageView)findViewById(R.id.orange);
    ImageView green = (ImageView)findViewById(R.id.green);
    ImageView brown = (ImageView)findViewById(R.id.brown);
    ImageView white = (ImageView)findViewById(R.id.white);

   blue.setOnClickListener(new ImageView.OnClickListener() {
       @Override
       public void onClick(View v) {
           DJ.keepMusicOn();
           Intent myIntent = new Intent(SelectColor.this, Games1.class);
           startActivity(myIntent);

       }
   });
    orange.setOnClickListener(new ImageView.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    green.setOnClickListener(new ImageView.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    brown.setOnClickListener(new ImageView.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    white.setOnClickListener(new ImageView.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });
    blue.setOnClickListener(new ImageView.OnClickListener() {
        @Override
        public void onClick(View v) {
            DJ.keepMusicOn();
        }
    });


}

最后,这是我第二次活动(用户选择颜色)的".xml"

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.zaidi.frame2.MainActivity2"
android:background="#ffffff">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Choose a color"
    android:id="@+id/textView9"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:textColor="#000000"
    android:textSize="30dp"/>
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:id="@+id/blue"
    android:src="@drawable/blue"
    android:layout_above="@+id/green"
    android:layout_toStartOf="@+id/green"
    android:clickable="true" />
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:id="@+id/brown"
    android:src="@drawable/brown"
    android:layout_alignParentBottom="true"
    android:layout_toEndOf="@+id/green"
    android:clickable="true" />
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:id="@+id/green"
    android:src="@drawable/green"
    android:layout_above="@+id/brown"
    android:layout_centerHorizontal="true"
    android:clickable="true" />
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:id="@+id/orange"
    android:src="@drawable/orange"
    android:layout_above="@+id/green"
    android:layout_toEndOf="@+id/green"
    android:clickable="true" />
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:id="@+id/white"
    android:src="@drawable/white"
    android:layout_alignTop="@+id/brown"
    android:layout_toStartOf="@+id/green"
    android:clickable="true" />

hi您可以轻松完成此任务。首先添加enum或给每种颜色一个类似的代码1表示红色2表示黑色3代表橙色等。然后使用intetobject.putextra("key",value)在intent中传递int。然后在第一个活动中检查颜色代码并根据颜色代码更改颜色。

Intent colorIntent = new Intent(SelectColor.this, Games1.class);
colorIntent.putExtra("colorCode",1);
startActivity(colorIntent);

第二活动

Intent colorIntent = getIntent();
int colorCode= intent.getIntExtra("colorCode"); 
switch(colorCode)
{
    case 1:
          image.setBackgroundResource(R.color.Red);
          break;
    case 2:
          image.setBackgroundResource(R.color.Black);
          break;
   case 3:
          image.setBackgroundResource(R.color.Orange);
          break;
} 

您可以用intent putExtra并通过所需的color

blue.setOnClickListener(new ImageView.OnClickListener() {
       @Override
       public void onClick(View v) {
           DJ.keepMusicOn();
           Intent myIntent = new Intent(SelectColor.this, Games1.class);
           myIntent.putExtra("desireColor","blue");
           startActivity(myIntent);
       }
   });

以及在Game1.classonCreate()方法中

Intent intent = getIntent();
String yourColor= intent.getStringExtra("desireColor"); // for this example you will get blue color
if(yourColor.equals("blue"){
   image.setBackgroundResource(R.color.blue);
} else {
 // and so on for other images
}

你有了自己的颜色,现在你想做什么就做什么。

您需要在意图中添加一个指示,表示颜色的id。更换android。R.color.holo_blue_dark使用您自己的颜色资源。

 blue.setOnClickListener(new ImageView.OnClickListener() {
       @Override
       public void onClick(View v) {
           DJ.keepMusicOn();
           Intent myIntent = new Intent(SelectColor.this, Games1.class);
           myIntent.putExtra("color",android.R.color.holo_blue_dark)
           startActivity(myIntent);
       }
   });

然后,提取颜色到资源"yourColor",并用它做你想做的事。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.games1);
    int yourColor = getIntent().getExtras().getInt("color");
    ...
}

SelectColor Activity

blue.setOnClickListener(new ImageView.OnClickListener() {
       @Override
       public void onClick(View v) {
           DJ.keepMusicOn();
           Intent myIntent = new Intent(SelectColor.this, Games1.class);
           myIntent.putExtra("ImageColor", Color.BLUE);
           startActivity(myIntent);
       }
   });

然后在Games1 Activity中检索您选择的颜色:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    int color = extras.getInt("ImageColor");
    wire1.setBackgroundColor(color);
}

最新更新