绘图面板基类继承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<Double> yRawData;/*** 横坐标值*/private ArrayList<String> 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);}@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh)//尺寸改变事件{super.onSizeChanged(w,h,oldw,oldh);}@Overrideprotected 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<allWidth;i++){xPoints[i]=i;yPoints[i]=(float)(Math.random()*400);}canvas.drawText("测试曲线",(float)(allWidth/2.0),20, _mPaint);//画标题for(int i=10;i<allWidth;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<allWidth-2;i++)//画曲线{canvas.drawLine(xPoints[i]+50,allHeight-210-yPoints[i],xPoints[i+1]+50,allHeight-210-yPoints[i+1], _mPaint);}}}

绘制活动页(TableLayout(纵向)好用,LinerLayOut横向)

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;@Overrideprotected 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() {@Overridepublic void onClick(View v) {graphicView. Redraw("0");//重绘触发}});button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {graphicView. Redraw("1");//重绘触发}});}
}

调用(主活动页的按钮注册侦听事件调用)

Button.OnClickListener listener5 = new Button.OnClickListener() {public void onClick(View v) {Intent intent = new Intent(MainActivity.this,MyDrawActivity.class);startActivity(intent);MainActivity.this.finish();}
};

android中在代码中动态布按钮和画板局并绘制曲线相关推荐

  1. Android Hacks:在代码中隐藏软键盘

    2019独角兽企业重金招聘Python工程师标准>>> 在代码中可以很容易的实现软键盘的隐藏: InputMethodManager imm = (InputMethodManage ...

  2. android studio中清除代码中的无效引用

    平时代码中的无效引用可能不影响APP的运行,但可能会引影 包的大小,所以养成好习惯,每次开发完成后,清理一下 Ctrl+Alt+O 组合键 清除,如果没有效果,看一下是不是登了QQ 快捷键被占用

  3. Android如何在代码中设置dimen值

    在xml布局文件中这只dimens值大家应该都用的hen6了,但是有的时候必须要在代码中设置某一个控件的宽高等, 使用getResources().getDimensionPixelSize(R.di ...

  4. js中变量和jsp中java代码中变量互相访问解决方案

    1.js变量获取jsp页面中java代码的变量值.  方法:var JS变量名 = <%=JAVA变量名 %>   2.java代码获取js变量的值.  说明:在JSP中:Java部分是在 ...

  5. js变量和java变量相等,js中变量和jsp中java代码中变量互相访问解决方案

    1.js变量获取jsp页面中java代码的变量值. 方法:var JS变量名 = 我们常常会将js文件和jsp文件分开写,在js文件中,上面的方法似乎不管用了. 也可以通过变通的方法来解决: a.js ...

  6. android:layout_marginleft 代码设置,在android的java代码中对控件的layout_marginLeft进行设置...

    有的时候,我们需要根据android中的上下文的逻辑对控件的"layout_marginLeft"进行设置(当然,一个控件的其他属性也可以设置,在这里只是举个例子,备忘!) 以下是 ...

  7. Android recipe 在代码中写布局

    代码: package my.demo; import android.app.Activity; public class TempActivity extends Activity {/** Ca ...

  8. Android 在java代码中获取xml中设置的dimen值

    1.如果dimen值写在了dimen.xml中: int width = (int)context.getResources().getDimension(R.dimen.thumb_img_widt ...

  9. 【错误记录】IntelliJ IDEA 中 Java 代码中的中文注释报错 ( Menu / File / Settings / Editor / File Encodings 中修改工程编码 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 IntelliJ IDEA 中 , 出现中文注释报错 ; Y:\002_WorkSpace\003_IDEA\Groovy_Demo\src\m ...

最新文章

  1. Deepfacelab的填坑之旅
  2. (文末有福利)口罩检测覆盖公有云、私有化及SDK等形态,拿来即用精准高效
  3. 物理化学 化学 动力学(上)
  4. django.core.exceptions.ImproperlyConfiguredmysqlclient 1.3.13 ornewer is required you have 0.9.2(亲测)
  5. python之高性能网络编程并发框架eventlet实例
  6. android windowsoftinputmode 状态栏冲突,android:windowSoftInputMode属性
  7. Java书籍推荐(这些书你看过几本?)
  8. 中国联通骨干网网络介绍
  9. echarts曲线图 鼠标位置偏移与提示框的大小设置(与竖线位置偏离)
  10. 开源KVM管理工具和平台
  11. MATLAB 数据类型转换
  12. python登陆126邮箱记录
  13. Kernel中bluetooth相关的config选项
  14. 云中马在A股上市:总市值约为40亿元,叶福忠为实际控制人
  15. Eventide发布Physion Mk II声音结构分离多效果插件
  16. java 整型数组定义_在Java中定义一个具有10个元素的整型数组a的语句是:___
  17. B站粉丝计数器!基于microByte
  18. TeX 家族(TeX, XeTeX, LuaTeX,XeLaTeX …看完这篇就懂了)
  19. Rancher Labs获2000万美元B轮融资, CEO 梁胜出任有容云联席CTO
  20. 原来装电信宽带送的光猫现在升级到了200M了是否要换个光猫?

热门文章

  1. linux ucontext 类型,协程:posix::ucontext用户级线程实现原理分析 | WalkerTalking
  2. python dataframe float转string_盘点Python:Pandas1.0的主要功能
  3. java 加密服务器_Javascript端加密java服务端解密
  4. jbl调音软件_[马自达] 佛山马自达昂克赛拉改装美国JBL汽车音响
  5. C语言指针,这可能是史上最干最全的讲解啦(附代码)!!!
  6. 揭秘!2020年4月全国程序员工资统计,新出炉!(包含地区和语言排行)
  7. verilog or VHDL出租车计价器电路设计
  8. html生成xml文件,字符串xml生成xml文件
  9. python executescript_在selenium中一些相对常用的JavaScript事件
  10. 计算机电源外形,电源外观及铭牌解析_HKC电源_机箱电源评测-中关村在线