一时兴起用android原生的基础绘制工具,绘制了一个正弦(余弦)函数图象,不多说,先上图:

MainView.java类

package com.zhaofeng.main;

import javax.crypto.SealedObject;

import android.app.Activity;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Path;

import android.graphics.Point;

import android.os.Bundle;

import android.os.Handler;

import android.view.SurfaceHolder;

import android.view.SurfaceHolder.Callback;

import android.view.SurfaceView;

public class MainView extends Activity {

/** Called when the activity is first created. */

private SurfaceView surfaceView;

private Paint paint;

private SurfaceHolder surfaceHolder;

private int scale_x = 20;

private int scale_y = 50;

private double ox=10;

private double oy=240;

private double x=0;

private double y=0;

private double t=0;

private boolean flag=true;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

surfaceView = (SurfaceView) findViewById(R.id.main_suf);

surfaceHolder = surfaceView.getHolder();

paint = new Paint();

surfaceHolder.addCallback(new Callback() {

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

// TODO Auto-generated method stub

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

// TODO Auto-generated method stub

new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

while (flag) {

try {

Thread.sleep(10);

Canvas canvas=surfaceHolder.lockCanvas();

if(canvas!=null)

{

//绘制坐标轴

paint.setColor(Color.WHITE);

canvas.drawText("O",20,220, paint);

paint.setColor(Color.BLUE);

canvas.drawLine(10,10,10,480, paint);

canvas.drawText("Y",20,30, paint);

paint.setColor(Color.GREEN);

canvas.drawLine(0,240,320,240, paint);

canvas.drawText("X",300,260, paint);

//绘制正弦曲线

t+=0.1;

x=t*scale_x;

y=Math.sin(t)*scale_y+240;

System.out.println("---------"+Math.round(Math.sin(t)));

if (t>0) {

paint.setColor(Color.RED);

canvas.drawLine(10+(int)ox,(int)oy,10+(int)x,(int)y, paint);

System.out.println(x+"s"+y);

}

ox=x;

oy=y;

if (t>15) {

flag=false;

}

}

surfaceHolder.unlockCanvasAndPost(canvas);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}).start();

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

// TODO Auto-generated method stub

}

});

}

}

main.xml

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:id="@+id/main_suf"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:text="@string/hello"

/>

android代码绘制正弦图像,利用Android的Canvas绘制正弦函数图像相关推荐

  1. android代码实现手机加速功能,Android自定义View实现内存清理加速球效果

    Android自定义View实现内存清理加速球效果 发布时间:2020-09-21 22:21:57 来源:脚本之家 阅读:105 作者:程序员的自我反思 前言 用过猎豹清理大师或者相类似的安全软件, ...

  2. android代码编写,如何正确编写Android代码

    你直接使用Android代码来构造和创建应用程序用户界面,下面文章进行详细的对Android代码进行详细的说明描述. 在你的Android代码中使用这个类作为你个比较快捷的方法去访问你的工程能够中的资 ...

  3. android 代码控件框高,Android控件_TextView(显示文本框控件)

    一.TextView控件的常用属性 1.android:id--控件的id 2.android:layout_width--设置控件的宽度 wrap_content(包裹实际文本内容) fill_pa ...

  4. android实现计算器功能吗,利用Android实现一个简单的计算器功能

    利用Android实现一个简单的计算器功能 发布时间:2020-11-20 16:25:01 来源:亿速云 阅读:90 作者:Leah 今天就跟大家聊聊有关利用Android实现一个简单的计算器功能, ...

  5. android代码下拉刷新页面,Android下拉刷新的实现

    ListView下拉刷新实现方式分析 1.添加顶部下拉加载界面. 2.监听onScrollListener,来判断当前是否在ListView最顶部. 3.监听onTouch事件,根据手势变化改变当前状 ...

  6. css3绘制环形_利用CSS简单地绘制一个操场

    前言 伴随着 CSS3(CSS Module 3)的发布,我们设计网页时有了更多的选择.对于一些比较简单的小图标和图片,我们可以利用 CSS3 很方便的进行绘制,从而减少页面的图片数量和HTTP请求次 ...

  7. 如何写成高性能的代码(一):巧用Canvas绘制电子表格

    一.什么是Canvas Canvas是HTML5的标签,是HTML5的一种新特性,又称画板.顾名思义,我们可以将其理解为一块画布,支持在上面绘制矩形.圆形等图形或logo等. 需要注意的是,与其他标签 ...

  8. HTML5绘制渐变直线,如何使用HTML5 Canvas绘制动态线性渐变

    如果要使用HTML5 Canvas绘制线性渐变,需要用到createLinearGradient()方法.下面我们就来一起看看具体的内容. createLinearGradient() createL ...

  9. 使用html画简单的图形,HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图...

    HTML5火的正热,最近有个想法也是要用到HTML的相关功能,所以也要好好学习一把. 好好看了一下Canvas的功能,感觉HTML5在客户端交互的功能性越来越强了,今天看了一下Canvas绘图,下边是 ...

最新文章

  1. VUE解决微信签名,SPA微信invalid signature问题,完美处理
  2. Android Studio系列教程二:基本设置与运行
  3. Caffe官方教程翻译(10):Editing model parameters
  4. js事件处理、事件对象
  5. 唯一可译码判断c语言_单片机基础实验数码管原理与C语言
  6. nyist 2 括号配对问题
  7. angular的组件通信
  8. c语言图灵机算法,图灵机的时间化简概述(3/4)
  9. android textwatcher 获取当前控件,android api解析之TextWatcher
  10. 【深度学习】U-Net简介
  11. oracle通过日期函数求年龄的大小
  12. 如何突破思维局限去思考世界,去读读以下三个理论
  13. C++按键模拟/刷屏器
  14. 闲置商标转让怎样管理最好?
  15. 求95859回文数c语言程序,csdn 回文数
  16. Java中notify和notifyAll的区别 - 何时以及如何使用
  17. python 当前时间的毫秒时间戳转换为 年-月-日 时:分:秒
  18. linux系统下的shell是什么,Linux系统中shell各命令的区别有什么?
  19. 30_ElasticSearch IK分词器配置文件 以及自定义词库
  20. 【转】 很美的句子,句句掉泪,不知道原创是谁,感谢

热门文章

  1. 史上最全| 14种自动化分拣系统合集|拿走!
  2. 老电脑如何利用云服务器提升性能,把旧电脑变成云电脑?让手机运行大型PC游戏...
  3. 【数据库】redis数据持久化
  4. 免费好用的APP应用安全在线检测
  5. PMS启动 APK 安装流程详解
  6. keepalived脑裂
  7. ATV 开发 一、ATV 开机动画定制 android 开机动画
  8. 基于Java鲸落文化线上体验馆系统设计实现(源码+lw+部署文档+讲解等)
  9. ArcSDE常见问题总结(三)
  10. 安装SDK Emulator找不到解决办法