zoukankan      html  css  js  c++  java
  • 自定义View,随着手指运动的小球

    这个实例是自定的view的初步介绍,要设计的是一个随着手指运动的小球。原理是随时获取手指的坐标,然后在这个坐标上面实时改变自定义view的坐标。这个view仅仅是画了一个圆形而已。

    自定义的view

    DrawView.java 

    package com.kale.drawview;
    
    
    import android.annotation.SuppressLint;
    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 = 60;
        public float currentY = 60;
        
        //定义,创建画笔
        Paint paint = new Paint();
        public DrawView (Context context) {
            super(context);
        }
        
        public DrawView(Context context,AttributeSet set) {
            super(context,set);
        }
        
        @Override
        public void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            //设置画笔颜色
            paint.setColor(Color.RED);
            //绘制一个小圆
            canvas.drawCircle(currentX, currentY, 50, paint);
        }
        
        // 为该组件的触碰时间2重写处理的方法
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            // 修改坐标
            currentX = event.getX();
            currentY = event.getY();
            
    
            // 通知组件,重新绘制自己
            invalidate();
            // 返回true表明该方法已经处理该事件
            return true;
        }
        
    }

    布局文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/root_relativeLayout_id"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="${relativePackage}.${activityClass}" >
    
        <com.kale.drawview.DrawView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    
    </RelativeLayout>

    当然,我们也可以不用布局文件,直接在代码中把自定义控件放入layout中

    package com.kale.drawview;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.RelativeLayout;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
    /*        RelativeLayout root  = (RelativeLayout)findViewById(R.id.root_relativeLayout_id);
            
            final DrawView drawView = new DrawView(this);
            //設置組件的最大寬度
            drawView.setMinimumHeight(300);
            drawView.setMinimumWidth(500);
            root.addView(drawView);*/
        }
    }
  • 相关阅读:
    Android中Context具体解释 ---- 你所不知道的Context
    JDK6、Oracle11g、Weblogic10 For Linux64Bit安装部署说明
    matplotlib 可视化 —— 定制 matplotlib
    matplotlib 可视化 —— 移动坐标轴(中心位置)
    matplotlib 可视化 —— 移动坐标轴(中心位置)
    matplotlib 可视化 —— 定制画布风格 Customizing plots with style sheets(plt.style)
    matplotlib 可视化 —— 定制画布风格 Customizing plots with style sheets(plt.style)
    指数函数的研究
    指数函数的研究
    指数分布的研究
  • 原文地址:https://www.cnblogs.com/tianzhijiexian/p/3858761.html
Copyright © 2011-2022 走看看