zoukankan      html  css  js  c++  java
  • 开发自定义View

    View组件就类似于一个矩形空白区域,刚开始它里面什么都没有,对于android应用的其他UI组件来说,他们都继承了VIew组件,然后在View组件的空白区域上绘制外观.

    基于这个原理,开发者可以开发出项目定制的组件,当android系统提供的UI不能满足开发需求时,可以自定义类去继承View类或者View类的相关子类.然后重写View类中的某些方法; 当这个自定义类写完后,可以通过代码把该自定义组件添加到指定容器中

    通常情况下,会写一个构造器; 例如定义一个随手指触摸移动的球体

    public class DrawCircle extends View {
    
        public float startx=30;
        public float starty=40;
        public DrawCircle(Context context) {
            super(context);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            Paint p = new Paint();
            p.setColor(Color.RED);
            canvas.drawCircle(startx, starty, 15, p);
        }
    }
    public class MainActivity extends Activity {
        private DrawCircle dc;
        private LinearLayout ll;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            ll = (LinearLayout) findViewById(R.id.ll_root);
            dc = new DrawCircle(this);
            
            //设置自定义组件的宽高
            dc.setMinimumHeight(500);
            dc.setMinimumWidth(300);
    
            dc.setOnTouchListener(new OnTouchListener() {
    
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    dc.startx = event.getX();
                    dc.starty = event.getY();
                    //视图发生变化,进行重绘
                    dc.invalidate();
                    return true;
                }
            });
            ll.addView(dc);
        }
    
    }
  • 相关阅读:
    Markdown
    异异还原
    程序和算法
    运算符
    Java复习1
    复习总结
    为什么Byte是8位,但是却只能表示到127,而不是255?
    笔记的认识
    笔记本触摸板
    电脑热键
  • 原文地址:https://www.cnblogs.com/android-zcq/p/3139414.html
Copyright © 2011-2022 走看看