zoukankan      html  css  js  c++  java
  • Android 自定义组件随着手指自动画圆

    首先自定义一个View子类:

    package com.example.androidtest0.myView;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.view.View;
    
    public class DrawView extends View {
        public float currentX = 40;
        public float currentY = 50;
        //定义、并创建画笔
        Paint p = new Paint();
        public DrawView(Context context) {
            super(context);
        }
    
        public DrawView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
        
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            //设置画笔的颜色
            p.setColor(Color.RED);
            //绘制一个小球
            canvas.drawCircle(currentX, currentY, 15, p);
        }
        
        /**
         * 为该组件的触碰事件重写事件处理方法
         */
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            //修改currentX、currentY两个属性
            currentX = event.getX();
            currentY = event.getY();
            //通知当前组件重绘自己
            invalidate();
            return true;
        }
    }

    主界面XML:

    custom_layout.xml

    <pre name="code" class="java"><?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/root"
        android:orientation="vertical" >
    
    </LinearLayout>

    主activity文件如下:

    package com.example.androidtest0;
    
    import com.example.androidtest0.myView.DrawView;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.LinearLayout;
    
    public class CustomView extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.custom_layout);
        }
    }

    效果:

    除此之外:

    还可以用XML的方式:也是首先建一个View的子类,和上面一样。然后主界面XML如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/root"
        android:orientation="vertical" >
    
        <com.example.androidtest0.myView.DrawView 
            android:layout_width="match_parent" android:layout_height="match_parent"
            />
    </LinearLayout>

    主activity文件如下:

    package com.example.androidtest0;
    
    import com.example.androidtest0.myView.DrawView;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.LinearLayout;
    
    public class CustomView extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.custom_layout);
        }
    }
  • 相关阅读:
    js保留两位小数
    js字符串转成数字的三种方法
    『MySQL』索引类型 normal, unique, full text
    checkstyle配置文件说明
    如何更好地利用Pmd、Findbugs和CheckStyle分析结果
    Hibernate SQL优化技巧dynamic-insert="true" dynamic-update="true"
    Struts2 action的单例与多例
    Eclipse插件checkstyle安装使用
    html 动态显示元素文本
    脱离 Spring 实现复杂嵌套事务,之一(必要的概念)
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4308036.html
Copyright © 2011-2022 走看看