Android,如何在同一活动中更改背景颜色

时间:2011-03-07 04:56:49

标签: android colors background

为了给你一些关于我的问题的背景知识我在这个问题上花了很多时间,但我提出的大多数问题都涉及到我认为可行的各种方式,但我从未真正问过什么是最简单的方法。这发生了。

为了显示我已完成了多少工作,这里有一些堆栈溢出问题,我在尝试使用不同方法完成此任务时发布了这些问题。

最后,这里有一些我尝试过的事情。 我最初的反应是,它非常容易,我每次想要改变时都可以调用 setContentView ,但显然情况并非如此。 其次,我尝试将不同的东西设置为bacgkround,编辑该对象并希望它会改变。没工作。 接下来我查看了android提供的内容,例如

ViewFlippers:我可以改变一切,但不能改变背景。

State List Drawable:我不太擅长实施它们,这可能是我的错?

逐帧动画:请注意我有关于它的堆栈溢出问题...需要更多?

  

毋庸置疑,我已经意识到我   努力工作太难了   应该只需要3-5行代码。所以   我在寻求建议。

1 个答案:

答案 0 :(得分:0)

我的解决方案是创建自定义View对象。这里的关键是覆盖onDraw函数,在该函数中只需向画布绘制您想要的颜色。这应该很容易。

如果您有任何疑问,请试试这个并告诉我......这里有一些指示......

在您的视图对象中......

public class MyView extends View {
  @Override protected void onDraw(Canvas canvas) {
    canvas.drawColor(mColor); 
  }

  private int mColor = 0xff000000; //black
  public void SetColor(int aColor) {
    mColor = aColor;
    invalidate(); //Not sure about this line, can't remember if this is the correct call... there is a call that causes a redraw
  }
}

在您的活动布局XML中......

<your.package.name.ClassName
    android:id="@+id/ClassName1"
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"/>

在您的活动代码中......

@Override public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.yourxmllayoutfile);
  MyView aMyView = (MyView) findViewById(R.id.ClassName1);
  aMyView.SetColor(0xff00ff00); //Green I think, this line changes the color
}

祝你好运:)