我正在制作一个Android绘图应用程序。 我想让用户可以在操作栏菜单项中选择颜色,颜色如绿色,蓝色和红色。默认颜色是黑色,我使用代码执行此操作:
paint.setColor(Color.BLACK);
当用户点击菜单项Rood时,画笔必须涂成红色。我该如何做到这一点?与蓝色和绿色相同。
这是我的活动代码:
这是我的查看代码:
我希望有人可以帮助我,我真的卡住了
答案 0 :(得分:0)
将句柄保存到SingleTouchEventView
对象。
SingleTouchEventView mSingleTouchEventView;
public class SingleTouchActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSingleTouchEventView = new SingleTouchEventView(this, null);
setContentView(mSingleTouchEventView);
}
在SingleTouchEventView
类中添加公共方法以接受颜色更改。
public class SingleTouchEventView extends View {
...
public changeColor(int color) {
paint.setColor(color);
}
...
}
从菜单中选择颜色时调用changeColor
。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
if (id == R.id.LijnGroen) {
mSingleTouchEventView.changeColor(Color.GREEN);
return true;
}
if (id == R.id.LijnBlauw) {
mSingleTouchEventView.changeColor(Color.BLUE);
return true;
}
if (id == R.id.LijnRood) {
mSingleTouchEventView.changeColor(Color.RED);
return true;
}
...
}
答案 1 :(得分:0)
创建SingleTouchEventView(this, null)
SingleTouchEventView stev = new SingleTouchEventView(this, null)
然后
setContentView(stev);
并在setColor(int i)
class
SingleTouchEventView
的函数
setColor(int i){
paint.setColor(i);
}
并在public boolean onOptionsItemSelected(MenuItem item)
函数
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
if (id == R.id.ResetAction) {
return true;
}if (id == R.id.LijnDun) {
return true;
}if (id == R.id.LijnDik) {
return true;
}
if (id == R.id.LijnGroen) {
return true;
}
if (id == R.id.LijnBlauw) {
return true;
}
if (id == R.id.LijnRood) {
stev.setColor(Color.RED)//for red color
return true;
}
return super.onOptionsItemSelected(item);
}
或者你可以让setColor(int i)
取整数参数并传递整数值。
并使用switch statement
喜欢
private void setColor(int i){
switch (i){
case 1:
paint.setColor(Color.RED);
break;
case 2:
paint.setColor(Color.BLUE);
break;
defaul:
paint.setColor(Color.BLACK);
break;
}
}
并在SingleTouchActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
if (id == R.id.ResetAction) {
return true;
}if (id == R.id.LijnDun) {
return true;
}if (id == R.id.LijnDik) {
return true;
}
if (id == R.id.LijnGroen) {
return true;
}
if (id == R.id.LijnBlauw) {
stev.setColor(2)//for blue color
return true;
}
if (id == R.id.LijnRood) {
stev.setColor(1)//for red color
return true;
}
return super.onOptionsItemSelected(item);
}