android代码绘制正弦图像,利用Android的Canvas绘制正弦函数图像
一时兴起用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绘制正弦函数图像相关推荐
- android代码实现手机加速功能,Android自定义View实现内存清理加速球效果
Android自定义View实现内存清理加速球效果 发布时间:2020-09-21 22:21:57 来源:脚本之家 阅读:105 作者:程序员的自我反思 前言 用过猎豹清理大师或者相类似的安全软件, ...
- android代码编写,如何正确编写Android代码
你直接使用Android代码来构造和创建应用程序用户界面,下面文章进行详细的对Android代码进行详细的说明描述. 在你的Android代码中使用这个类作为你个比较快捷的方法去访问你的工程能够中的资 ...
- android 代码控件框高,Android控件_TextView(显示文本框控件)
一.TextView控件的常用属性 1.android:id--控件的id 2.android:layout_width--设置控件的宽度 wrap_content(包裹实际文本内容) fill_pa ...
- android实现计算器功能吗,利用Android实现一个简单的计算器功能
利用Android实现一个简单的计算器功能 发布时间:2020-11-20 16:25:01 来源:亿速云 阅读:90 作者:Leah 今天就跟大家聊聊有关利用Android实现一个简单的计算器功能, ...
- android代码下拉刷新页面,Android下拉刷新的实现
ListView下拉刷新实现方式分析 1.添加顶部下拉加载界面. 2.监听onScrollListener,来判断当前是否在ListView最顶部. 3.监听onTouch事件,根据手势变化改变当前状 ...
- css3绘制环形_利用CSS简单地绘制一个操场
前言 伴随着 CSS3(CSS Module 3)的发布,我们设计网页时有了更多的选择.对于一些比较简单的小图标和图片,我们可以利用 CSS3 很方便的进行绘制,从而减少页面的图片数量和HTTP请求次 ...
- 如何写成高性能的代码(一):巧用Canvas绘制电子表格
一.什么是Canvas Canvas是HTML5的标签,是HTML5的一种新特性,又称画板.顾名思义,我们可以将其理解为一块画布,支持在上面绘制矩形.圆形等图形或logo等. 需要注意的是,与其他标签 ...
- HTML5绘制渐变直线,如何使用HTML5 Canvas绘制动态线性渐变
如果要使用HTML5 Canvas绘制线性渐变,需要用到createLinearGradient()方法.下面我们就来一起看看具体的内容. createLinearGradient() createL ...
- 使用html画简单的图形,HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图...
HTML5火的正热,最近有个想法也是要用到HTML的相关功能,所以也要好好学习一把. 好好看了一下Canvas的功能,感觉HTML5在客户端交互的功能性越来越强了,今天看了一下Canvas绘图,下边是 ...
最新文章
- VUE解决微信签名,SPA微信invalid signature问题,完美处理
- Android Studio系列教程二:基本设置与运行
- Caffe官方教程翻译(10):Editing model parameters
- js事件处理、事件对象
- 唯一可译码判断c语言_单片机基础实验数码管原理与C语言
- nyist 2 括号配对问题
- angular的组件通信
- c语言图灵机算法,图灵机的时间化简概述(3/4)
- android textwatcher 获取当前控件,android api解析之TextWatcher
- 【深度学习】U-Net简介
- oracle通过日期函数求年龄的大小
- 如何突破思维局限去思考世界,去读读以下三个理论
- C++按键模拟/刷屏器
- 闲置商标转让怎样管理最好?
- 求95859回文数c语言程序,csdn 回文数
- Java中notify和notifyAll的区别 - 何时以及如何使用
- python 当前时间的毫秒时间戳转换为 年-月-日 时:分:秒
- linux系统下的shell是什么,Linux系统中shell各命令的区别有什么?
- 30_ElasticSearch IK分词器配置文件 以及自定义词库
- 【转】 很美的句子,句句掉泪,不知道原创是谁,感谢