zoukankan      html  css  js  c++  java
  • Android --------- 自己定义VIew

    package com.example.coustomviewdemo;
    
    
    import android.R.interpolator;
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Paint.FontMetrics;
    import android.util.AttributeSet;
    import android.view.View;
    
    
    public class FightViewDemo extends View {
    
    
    	public FightViewDemo(Context context) {
    		super(context);
    		// TODO Auto-generated constructor stub
    		init(context,null);
    	}
    
    
    	public FightViewDemo(Context context, AttributeSet attrs) {
    		super(context, attrs);
    		// TODO Auto-generated constructor stub
    		init( context,  attrs);
    	}
    
    
    	public FightViewDemo(Context context, AttributeSet attrs, int defStyleAttr) {
    		super(context, attrs, defStyleAttr);
    		// TODO Auto-generated constructor stub
    		init( context,  attrs);
    	}
    	
    	private Paint paint;
    	
    	private void init(Context context, AttributeSet attrs)
    	{
    		paint = new Paint();
    		paint.setColor(Color.RED);
    		
    		
    	}
    	
    	
    	@Override
    	protected void onDraw(Canvas canvas) {
    		// TODO Auto-generated method stub
    		super.onDraw(canvas);
    		
    		//TODO 绘制文本
    		
    //		整个父控件 getHeight 
    		int height = getHeight();
    //		整个父控件 getWidth
    		int width = getWidth();
    		
    //		怎样获取组件自身的高度和宽度?
    		String text = "LoveHellOWorld";
    		
    		FontMetrics metrics = paint.getFontMetrics();
    		int descent = (int)metrics.descent;
    
    
    //		初始化 widths 长度为 text文本的字符的大小。
    		float[] widths = new float[text.length()];
    //		获取一哥字符串 每个字符的像素宽度。
    		paint.getTextWidths(text, widths);
    		
    //		获取自身组件的长度
    		int myWidth=0;
    		for(int i=0;i<widths.length;i++)
    		{
    			myWidth+=widths[i];
    		}
    		
    //		获取自身组件的高度
    		int th = (int)paint.getTextSize();
    		
    		
    		int posX =(width-myWidth)/2;
    		
    		int posY = height/2 + th/2 - descent;
    		
    //		话自己的文本内容:
    		canvas.drawText(text, posX, posY, paint);
    		
    //		标准line
    		canvas.drawLine(0, height/2, width, height/2, paint);
    		canvas.drawLine(width/2, 0, width/2, height, paint);
    		
    		
    		
    	}
    	
    
    
    }

  • 相关阅读:
    整理Eclipse常用快捷键
    前端网站资源推荐
    Node.js 官方示例中的 ECMAScript 2015
    D3.js 入门系列 — 选择元素和绑定数据
    D3.js 入门系列
    PlaceHolder的两种实现方式
    Vue.js 是什么
    Webstorm官方最新版本for Mac版本 不用注册码/破坏原文件
    vue.js 学习 仅自己加强记忆
    jQuery 动画animate,显示隐藏,淡入淡出,下拉切换,过渡效果
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7266739.html
Copyright © 2011-2022 走看看