我的基本应用创意是在屏幕上绘图。我有Spinner
个对象用来选择"笔"的颜色。我让他们设置一个开关盒来改变" pen"颜色。 Spinner
位于我的MainActivity
课程中。我已经得到了我的"笔"名为Brush_Color
的类中的代码。
以下是我MainActivity
与Spinner
相关的代码。每个case都引用我的arrays.xml中的颜色。评论Paint paint = ...
是我试图做的但没有运气。
public class MainActivity extends ActionBarActivity implements AdapterView.OnItemSelectedListener{
//Paint paint = new Paint(Brush_Choices.this.paint, Brush_Choices.class);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.color_selector, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
}
public void onItemSelected(AdapterView<?> parent, View v, int position, long id){
switch(position) {
case 0:
//paint.setColor(Color.BLACK);
break;
case 1:
//paint.setColor(Color.BLUE);
break;
public void onNothingSelected(AdapterView<?> parent){
}
然后这是我的Brush_Color
类的代码。我尝试从此处访问Paint
对象,并在我的MainActivity
课程中使用它。我虽然不知道怎么做。
Path path = new Path();
SparseArray<PointF> points = new SparseArray<>();
Paint paint = new Paint();
public void onDraw(Canvas canvas){
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
canvas.drawPath(path,paint);
}
答案 0 :(得分:1)
public void onDraw(Canvas canvas){
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
canvas.drawPath(path,paint);
}
在代码的这一部分中,您已经从paint类中检索了笔触宽度。在实施此类代码或从现有来源复制此类代码之前,您应该完整地理解它。从一个班级到另一个班级访问变量的不同方法可能有所不同,但我会扩展你已经使用过的那个。
你应该在paint类中有一个变量用于描边宽度。这应该是一个私有变量。它私密的原因是因为您不希望类直接访问该变量。 In Java, difference between default, public, protected, and private
在paint类中,你应该有两个函数,它们被称为Getters和Setters。 getter和setter的文档here
我假设它看起来有点像这样:
一个Getter :
public static int getStrokeWidth() {
return strokeWidth;
}
笔画宽度的Setter :
public static void setStrokeWidth(int sWidth) {
this.strokeWidth = sWidth;
}
这两个函数允许从另一个现有类访问paint类,在这些函数中定义变量,以确保正确收集要收集的变量。您所要做的就是在这些函数中的任何一个上调用static
回调来获取变量的值。
所以使用当前的例子,如果你打电话:
Paint.getStrokeWidth();
您将检索该private int strokeWidth;
并且反过来相同,但这次不是获取值,而是设置程序中当前点的值。
Paint.setStrokeWidth(10);
此函数允许您为paint
类中的变量定义值。
请参阅es6 call static methods以获取有关静态方法回调的帮助。