Java:使用另一个类中的变量

时间:2015-05-03 18:33:14

标签: java android spinner paint

我的基本应用创意是在屏幕上绘图。我有Spinner个对象用来选择"笔"的颜色。我让他们设置一个开关盒来改变" pen"颜色。 Spinner位于我的MainActivity课程中。我已经得到了我的"笔"名为Brush_Color的类中的代码。

以下是我MainActivitySpinner相关的代码。每个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);
}

1 个答案:

答案 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以获取有关静态方法回调的帮助。