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