首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于onDraw方法

关于onDraw方法
EN

Stack Overflow用户
提问于 2017-02-17 09:42:23
回答 2查看 1.5K关注 0票数 1

我想在屏幕上画长方形。但我不执行计划。因为我写错代码了。因此,我不会在下面写MainActivity。你能帮我使用onDraw方法吗?

诚挚的问候。

MainActivity.java

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


}

}

Deneme.java

代码语言:javascript
复制
public class Deneme extends View {

Paint myPaint;

public Deneme(Context context) {
    super(context);

    myPaint = new Paint();
    myPaint.setColor(Color.BLACK);
    myPaint.setStyle(Paint.Style.FILL);
}

@Override
protected void  onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Rect ourRect = new Rect();
    ourRect.set(0,0,canvas.getWidth(),canvas.getHeight()/2);
    canvas.drawRect(ourRect,myPaint);
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-17 09:54:14

你可以试试这个:

代码语言:javascript
复制
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.View;

public class Deneme extends View {

    private Rect mRectangle;
    private Paint mPaint;

    public Deneme(Context context) {
        super(context);
        int x = 50;
        int y = 50;
        int sideLength = 200;

        // create a rectangle that we'll draw later
        mRectangle = new Rect(x, y, sideLength, sideLength);

        // create the Paint and set its color        
        mPaint = new Paint();
        mPaint.setColor(Color.GRAY);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.BLUE);
        canvas.drawRect(mRectangle, mPaint);
    }

}

快速

你的活动:

代码语言:javascript
复制
import android.support.v7.app.AppCompatActivity;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new Deneme(this));
    }

}

也可以尝试这种优雅的方式:

在布局activity_main中:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main_relative_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.package.RectangleActivity">

</RelativeLayout>

在你的活动中:

代码语言:javascript
复制
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import com.package.Deneme;
import com.package.R;

public class MainActivity extends AppCompatActivity {

    private RelativeLayout mRelativeLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //add RelativeLayout
        mRelativeLayout =(RelativeLayout) findViewById(R.id.activity_main_relative_layout);

        //add LayoutParams
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);

        Deneme rectangle = new Deneme(this);
        rectangle.setLayoutParams(params);
        mRelativeLayout.addView(rectangle);

    }
}

你会找到支持媒体的文章!GitHub中的这个例子

票数 0
EN

Stack Overflow用户

发布于 2017-02-17 09:54:55

如果要绘制矩形,请使用以下代码

代码语言:javascript
复制
public class Deneme extends View {

Paint myPaint;

public Deneme(Context context) {
    super(context);
    init();


}

public Deneme(Context context, AttributeSet attributeSet)
{
    super(context,attributeSet);
    init();
}

@Override
protected void  onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Rect ourRect = new Rect();
    ourRect.set(0,0,canvas.getWidth(),canvas.getHeight()/2);
    canvas.drawRect(ourRect,myPaint);
}

public void init()
{
    myPaint = new Paint();
    myPaint.setColor(Color.BLACK);
    myPaint.setStyle(Paint.Style.FILL);
}
}

在设计xml文件时使用此类,将出现矩形。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42294477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档