绘图应用更改画笔颜色

时间:2014-07-09 19:32:51

标签: java android onclick paint

我正在制作一个Android绘图应用程序。 我想让用户可以在操作栏菜单项中选择颜色,颜色如绿色,蓝色和红色。默认颜色是黑色,我使用代码执行此操作:

paint.setColor(Color.BLACK);

当用户点击菜单项Rood时,画笔必须涂成红色。我该如何做到这一点?与蓝色和绿色相同。

这是我的活动代码:

http://pastebin.com/L4Wea5qE

这是我的查看代码:

http://pastebin.com/wPk4kZUX

我希望有人可以帮助我,我真的卡住了

2 个答案:

答案 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)函数

中调用setColor()函数
 @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);
    }