2015-01-07 146 views
0

下面是從左邊0像素繪製矩形的代碼,但是如何將矩形設置爲從屏幕右側0像素繪製?右邊的繪製矩形

paint.setColor(Color.RED); 
    canvas.drawRect(0, 0, 5, canvas.getHeight(), paint); 

activity_main.xml中

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity"> 

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <package.name.customview.Diagram 
     android:id="@+id/diagram" 
     android:layout_width="fill_parent" 
     android:layout_height="52dp" /> 

</LinearLayout> 

Diagram.java

package com.apptacularapps.customview; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.View; 

public class Diagram extends View { 
    Paint paint = new Paint(); 

    public Diagram(Context context) { 
     super(context); 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     paint.setColor(Color.RED); 
     canvas.drawRect(0, 0, 5, canvas.getHeight(), paint); 

     paint.setColor(Color.RED); 
     canvas.drawRect(canvas.getWidth() - 5, 0, 5, canvas.getHeight(), paint); 
    } 
} 
+0

試試我的答案,看看它是否工作 – Prem

回答

0

創建一個新類 - DrawView.java

import android.content.Context; 
    import android.graphics.Canvas; 
    import android.graphics.Color; 
    import android.graphics.Paint; 
    import android.view.View; 

    public class DrawView extends View { 
     Paint paint = new Paint(); 

     public DrawView(Context context) { 
      super(context);    
     } 

     @Override 
     public void onDraw(Canvas canvas) { 

    //Code to Measure the Screen width in pixels 

    Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    int width = size.x; 

      paint.setColor(Color.RED); 
    canvas.drawRect(0, 0, 5, canvas.getHeight(), paint); 

    paint.setColor(Color.RED); 
    canvas.drawRect(width-canvas.getWidth(), 0, width, canvas.getHeight(), paint); 
     } 
} 

在您的Diagram.java中,如下所示更改您的onDraw方法。

@Override 
    public void onDraw(Canvas canvas) { 
     DrawView drawView = new DrawView(this); 
     drawView.setBackgroundColor(Color.WHITE); 
     setContentView(drawView); 
    } 

更新 - 要解決你的錯誤,試試這個

如果您在活動不是您可以通過WINDOW_SERVICE得到默認顯示:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
Display display = wm.getDefaultDisplay(); 

,而不是

Display display = getWindowManager().getDefaultDisplay(); 

update 2 - 解決上下文錯誤。

添加此行Context context;此行Paint paint = new Paint();

下面這行添加this.context = context;此行super(context);

更新3下 - 使用此代碼示例

Diagram.java

包融爲一體。 casestudy.intentsandfilter; import android.app.Activity; import android.graphics.Color; import android.os.Bundle;

public class Diagram extends Activity { 
    DrawView drawView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     drawView = new DrawView(this); 
     drawView.setBackgroundColor(Color.WHITE); 
     setContentView(drawView); 

    } 
} 

DrawView.java

package com.casestudy.intentsandfilter; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.View; 

public class DrawView extends View { 
    Paint paint = new Paint(); 

    public DrawView(Context context) { 
     super(context);    
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     paint.setColor(Color.BLACK); 
     paint.setStrokeWidth(3); 
     canvas.drawRect(30, 30, 80, 80, paint); 
     paint.setStrokeWidth(0); 
     paint.setColor(Color.CYAN); 
     canvas.drawRect(33, 60, 77, 77, paint); 
     paint.setColor(Color.YELLOW); 
     canvas.drawRect(33, 33, 77, 60, paint); 

    } 

} 
+0

道歉Diagram.java不應該存在 – MacaronLover

+0

我現在得到這個錯誤'無法解析法「getWindowManager() ''檢查上面的最新截圖。 – MacaronLover

+0

我不知道爲什麼我得到這個錯誤 – MacaronLover