有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在右侧绘制矩形

下面是从左侧0像素处绘制矩形的代码,但是如何设置从屏幕右侧0像素处绘制矩形

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

主要活动。xml

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

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

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

</LinearLayout>

图表。java

package com.apptacularapps.customview;

import 安卓.content.Context;
import 安卓.graphics.Canvas;
import 安卓.graphics.Color;
import 安卓.graphics.Paint;
import 安卓.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 );
    }
}

共 (1) 个答案

  1. # 1 楼答案

    创建一个新类-DrawView。爪哇

        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 );
            }
    }
    

    在你的图表中。java,如下更改onDraw方法

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

    更新-要解决错误,请尝试此操作

    如果您不在活动中,您可以通过WINDOW_服务获得默认显示:

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

    而不是

    Display display = getWindowManager().getDefaultDisplay();
    

    更新2-解决上下文错误

    将此行Context context;添加到此行Paint paint = new Paint();下方

    将此行this.context = context;添加到此行super(context);下方

    更新3-使用此代码示例

    图表。爪哇

    包com。案例研究。意图和过滤器; 导入android。应用程序。活动 导入android。图样颜色 导入android。操作系统。束

    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。爪哇

    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 );
    
        }
    
    }