想使用Canvas 必须先弄清楚Canvas 的坐标系,我们先弄清楚Canvas 的坐标原点

Canvas 坐标问题

先简单定义一个View;

public class StudyView extends View {
    private Paint paint;
    public StudyView(Context context) {
        super(context);
    }
    public StudyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint = new Paint();
        paint.setColor(Color.RED);
    }
    public StudyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.BLUE);
        canvas.drawRect(new Rect(0,0,100,100),paint);
        super.onDraw(canvas);
    }

}

我在画布中创建了一个矩形,这个矩形的坐标是从坐标原点位置开始画,因为我坐标起始的位置为0,0,然后看布局文件

<?xml version="1.0" encoding="utf-8"?>
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
            android:id="@+id/studyview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


虽然红色矩形在屏幕的最做上方,但原点并不是在原点的左上方,接下来我再次修改布局:

    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
            android:id="@+id/studyview"
        android:layout_width="200dp"
        android:layout_height="200dp"/>


很明显绿色矩形并不是在屏幕的左上角而是在控件的左上角,由此实验可以证明Canvas的左边并不是在屏幕的做上方而是在控件画布的左上方。

更多相关文章

  1. Android自定义View模拟并实现3D柱状图
  2. Android中实现物体在屏幕的移动
  3. Android滚动显示数字动画
  4. Android(安卓)自定义控件 GuideView 引导界面
  5. android 多点触控Demo
  6. android 自定义View设置自定义监听 框架(监听自定义字符)
  7. Android下图片处理的的一些方法
  8. Android中GridView的书架效果实现
  9. android.graphics包中的一些类的使用

随机推荐

  1. Android 多国语言文件夹
  2. Android 设置让EditText不自动获取焦点
  3. Android Studio添加aar依赖的两种方式
  4. Android PureMVC
  5. Android Gradle Plugin指南(三)——依赖关
  6. 使用air进行移动app开发常见功能和问题(二
  7. Android中ProgressDialog的简单示例
  8. Android的简易弹幕
  9. AES加密进行Android的SharedPreferences
  10. android project 文件夹