android 动态绘制布局,Android代码和绘制曲线中按钮和绘图板的动态布局

79ca7ac7869a30fcfc9cf95847f8777a.png

时间: 2019年1月11日

f9b9376978d4d57ba24fdd241b7da709.gif

本文向您介绍Android代码中的按钮和绘图板的动态布局和绘制曲线,主要包括示例android 动态绘制曲线,应用技巧,基本知识和知识android 动态绘制曲线,包括Android代码中的按钮和绘图板的动态布局和绘制曲线. 需要注意,具有一定的参考价值,需要的朋友可以参考一下.

CYh69lsIN-dZqql4iGm7t_mYvLloiPy5ydmJqJgpFqaY-iyoLIfJ2XsNaci3eBnWGKo6N9ZYqUk3htmX9jaGuleaevf9Gpm22yyXaMiGivkqeHlKSbmZiwY2Vyp6qXmaSqdM2a

绘图面板基类继承View

package com.mytest.myapplication.Utility;

import android.graphics.Color;

import android.util.Log;

import android.view.View;

import android.content.Context;

import android.content.res.Resources;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.Paint.Style;

import android.graphics.Path;

import android.graphics.Point;

import android.util.AttributeSet;

import android.util.DisplayMetrics;

import android.view.WindowManager;

import android.widget.Button;

import java.util.ArrayList;

//自定义简单曲线图

public class MyGraphicView extends View{

public Context _Context;

private Paint _mPaint;

private Paint _mPaint2;

public String _type="0";

// private Resources _res;

// private DisplayMetrics _dm;

/**

* 曲线上总点数

*/

private float[] mPoints={0,0,10,10,20,20,30,30,};

/**

* 纵坐标值

*/

private ArrayList yRawData;

/**

* 横坐标值

*/

private ArrayList xRawDatas;

public MyGraphicView(Context context)

{

this(context, null);

}

public MyGraphicView(Context context, AttributeSet attrs)

{

super(context, attrs);

this._Context = context;

initView();

}

private void initView()//初始化

{

//this._res = _Context.getResources();

this._mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

this._mPaint2 = new Paint(Paint.ANTI_ALIAS_FLAG);

// _dm = new DisplayMetrics();

// WindowManager wm = (WindowManager) _Context.getSystemService(Context.WINDOW_SERVICE);

// wm.getDefaultDisplay().getMetrics(_dm);

}

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh)//尺寸改变事件

{

super.onSizeChanged(w,h,oldw,oldh);

}

@Override

protected void onDraw(Canvas canvas)

{

_mPaint.setColor(Color.BLUE);//颜色赋值

_mPaint2.setColor(Color.RED);//颜色赋值

if(_type=="0") {

canvas.drawLine(0, 100, getWidth(), getHeight(), _mPaint);

// super.onDraw(canvas);

}

else

{

DrawXYAxis( canvas);//画坐标和曲线

// canvas.drawLines(mPoints, _mPaint);

}

}

public void Redraw(String type)//重绘触发

{

_type=type;

invalidate();//重绘触发事件

}

public void DrawXYAxis(Canvas canvas)//画坐标和曲线

{

int allWidth=getWidth();//界面宽度

int allHeight=getHeight();//界面高度

canvas.drawLine(50,50,(float)(50),(float)(allHeight-50),_mPaint2);//画y轴

canvas.drawLine((float)(50),(float)(allHeight-50),(float)(allWidth-50),(float)(allHeight-50),_mPaint2);//画x轴

float[] xPoints=new float[allWidth];

float[] yPoints=new float[allWidth];

for(int i=0;i

{

xPoints[i]=i;

yPoints[i]=(float)(Math.random()*400);

}

canvas.drawText("测试曲线",(float)(allWidth/2.0),20, _mPaint);//画标题

for(int i=10;i

{

if(i%50==0)

{

canvas.drawText(String.valueOf(i),i,allHeight-30, _mPaint);

}

}

for(int i=allHeight-10;i>50;i-=50)//画纵轴刻度

{

try {

canvas.drawText(String.valueOf(allHeight-10-i),20,i, _mPaint);

}

catch (Exception e)

{

Log.i("异常:",e.toString());

}

}

for(int i=0;i

{

canvas.drawLine(xPoints[i]+50,allHeight-210-yPoints[i],xPoints[i+1]+50,allHeight-210-yPoints[i+1], _mPaint);

}

}

}

56ff818aa5780bfdc4e4733871e0a8e9.gif

绘制活动页面(TableLayout(垂直)易于使用,LinerLayOut水平)

2145e554c64f8ad87f7eb33a8e722d9f.png

package com.mytest.myapplication;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.DisplayMetrics;

import android.view.View;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.TableLayout;

import com.mytest.myapplication.Utility.MyGraphicView;

public class MyDrawActivity extends AppCompatActivity {

MyGraphicView graphicView;

public Button button1;

public Button button2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

DisplayMetrics metric = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metric);

int width = metric.widthPixels; // 屏幕宽度(像素)

int height = metric.heightPixels; // 屏幕高度(像素)

float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)

int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

//final LinearLayout layout = new LinearLayout(this);

final TableLayout layout=new TableLayout(this);

graphicView=new MyGraphicView(this,null);

button1=new Button(this);

button2=new Button(this);

button1.setText("按钮1");

button2.setText("按钮2");

button1.setWidth(width);

button2.setWidth(width);

layout.addView(button1);

layout.addView(button2);

layout.addView(graphicView);

setContentView(layout);

button1.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

graphicView. Redraw("0");//重绘触发

}

});

button2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

graphicView. Redraw("1");//重绘触发

}

});

}

}

呼叫(呼叫主活动页面的按钮注册事件)

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-231649-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值