使用onClick方法更改背景颜色

时间:2015-12-18 20:05:42

标签: android android-activity onclick onclicklistener

我正在尝试为培训目的创建一个简单的应用,以便在点击应用时在白色和黑色背景之间切换。我试图保持一般的一切,以便允许可扩展性略微其他目的。这个网站有很多类似的想法,但没有一个能回答我的问题。不过,我从这些帖子中借鉴了一些想法。因此它保持一般性,我使用的函数changeScreen()可以很容易地更改用于其他目的。

我的问题是:

1)我不确定changeScreen()的参数应该是什么,或者函数是否需要参数。

2)如何定义changeScreen()。函数getColor和setBackgroundColor是猜测的,不会编译。

3)应该在哪里定义函数changeScreen()。为了抽象的目的,我希望尽可能将它与使用位置分开。

4)我不确定传递给关于函数changeScreen的onclick函数的View。应该通过还是不通过?

这是我的java文件, MainActivity.java:

package com.mycompany.myapplication;

    import android.app.*;
    import android.graphics.Color;
    import android.support.v7.app.*;
    import android.os.*;
    import android.text.Layout;
    import android.view.*;
    import android.widget.*;
    import java.util.*;

public class MainActivity extends Activity {

RelativeLayout MainActivity;

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

    MainActivity = (RelativeLayout) findViewById(R.id.MainActivity);
    MainActivity.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            MainActivity.changeScreen();
        }
    });
}

public void changeScreen(){
    if (getColor()== "White"){
        MainActivity.setBackgroundColor("Black");
    } else {
        MainActivity.setBackgroundColor("White");
    }

}

这是相应的xml文件, activity_main.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"
   android:id="@+id/MainActivity"
   android:clickable="true"
   tools:context=".MainActivity">
</RelativeLayout>

这是颜色xml文件,(我知道我需要在colors.xml中定义颜色为白色), colors.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="colorPrimary">#3F51B5</color>
   <color name="colorPrimaryDark">#303F9F</color>
   <color name="colorAccent">#FF4081</color>
   <color name="black">#000000</color>
</resources>

2 个答案:

答案 0 :(得分:2)

    final RelativeLayout MainActivity = (RelativeLayout) findViewById(R.id.MainActivity);
    MainActivity.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if(((ColorDrawable) MainActivity.getBackground()).getColor() == getResources().getColor(R.color.WHITE))
            MainActivity.setBackgroundColor(getResources().getColor(R.color.BLACK));
        else
            MainActivity.setBackgroundColor(getResources().getColor(R.color.WHITE));
    }
});

答案 1 :(得分:1)

100%适用于所有人,这是为了更改OnClick Funtion(方法)的活动背景颜色。
也适用于“振动按钮/图像按钮OnClick”方法

    ImageButton ib = (ImageButton) findViewById(R.id.share1);

    ib.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View view) {

            Random random = new Random();
            relativeLayout.setBackgroundColor(Color.rgb(random.nextInt(256), random.nextInt(256), random.nextInt(256)));

            Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            v.vibrate(10);
        }
    });