zoukankan      html  css  js  c++  java
  • Android:View

    View

    View's Main Draw Process:

    1. onMeasure()                          Called to determine the size requirements for this view and all its children.
    2. onLayout()                             Called when this view should assign a size and postion to all of its children.       
    3. onDraw()                               Called when this view render its content.          
    4. dispatchDraw()                      Called by draw to draw its child view.

    The following source code for a test:

    package com.slowalker.viewdemo;
    
    import android.os.Bundle;
    import android.os.Parcelable;
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Canvas;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.widget.LinearLayout;
    
    public class MainActivity extends Activity {
    
        private static final String TAG = MainActivity.class.getSimpleName();
        
        private static final boolean DEBUG = true;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if (DEBUG) {
                Log.d(TAG, "onCreate");
            }
            setContentView(new SView(this), new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
            
        }
        
        private static class SView extends View {
    
            private static final String TAG = SView.class.getSimpleName();
            
            public SView(Context context) {
                super(context);
            }
    
            @Override
            protected void dispatchDraw(Canvas canvas) {
                if (DEBUG) {
                    Log.d(TAG, "dispatchDraw");
                }
                super.dispatchDraw(canvas);
                
            }
    
            @Override
            protected void onDraw(Canvas canvas) {
                if (DEBUG) {
                    Log.d(TAG, "onDraw");
                }
                super.onDraw(canvas);
            }
    
            @Override
            protected void onLayout(boolean changed, int left, int top, int right,
                    int bottom) {
                if (DEBUG) {
                    Log.d(TAG, "onLayout");
                }
                super.onLayout(changed, left, top, right, bottom);
            }
    
            @Override
            protected void onFinishInflate() {
                if (DEBUG) {
                    Log.d(TAG, "onFinishInflate");
                }
                super.onFinishInflate();
            }
    
            @Override
            protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                if (DEBUG) {
                    Log.d(TAG, "onMeasure");
                }
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            }
            
        }
    
    }
  • 相关阅读:
    ios 人脸检测
    改善用户体验的几个alert提示效果(收集整理)
    asp.net中关于《%=》《%#》《%》 的用法——(转帖)
    flash学习网址
    网页数据表格自动填充序号
    <%#..%>与<%=..%>的区别
    用Margin还是用Padding
    由浅入深漫谈margin属性
    css中导入样式表和链接样式表有什么区别,我不是问语法,而是问内在区别,还有我怎么才能体会到他们的区别
    ASP.NET Eval如何进行数据绑定
  • 原文地址:https://www.cnblogs.com/slowalker/p/3398982.html
Copyright © 2011-2022 走看看