`
ggyyleo
  • 浏览: 49666 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
package com.jleo;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;

public class MapView extends SurfaceView implements Callback {

	private LunarThread thread;
	public boolean running;
	private SurfaceHolder holder;
	private Resources mRes;
	private Position[] ps;
	private float zoom;
	private float offsetX;
	private float offsetY;
	private float lastX;
	private float lastY;

	public MapView(Context context, AttributeSet attrs) {
		super(context, attrs);
		thread = new LunarThread();

		holder = getHolder();
		holder.addCallback(this);

		mRes = context.getResources();
	}

	public boolean onTouchEvent(MotionEvent event) {
		int eventaction = event.getAction();

		switch (eventaction) {

		case MotionEvent.ACTION_MOVE:

			float endX = event.getX();
			float endY = event.getY();
			float lastX = this.lastX;
			float lastY = this.lastY;
			if (lastX == 0 && lastY == 0) {
				lastX = endX;
				lastY = endY;
			}
			this.lastX = endX;
			this.lastY = endY;
			offsetX += (endX - lastX)/zoom;
			offsetY += (endY - lastY)/zoom;
			break;
		case MotionEvent.ACTION_UP:
			this.lastX = 0;
			this.lastY = 0;
			break;
		case MotionEvent.ACTION_DOWN:
		this.lastX =  event.getX();
		this.lastY =  event.getY();
		break;
	}
		this.invalidate();
		return true;
	}
	
	class LunarThread extends Thread {
		private Bitmap androidIcon;
		private Canvas c;
		@Override
		public void run() {
			androidIcon = BitmapFactory.decodeResource(mRes, R.drawable.android);
			// bg = BitmapFactory.decodeResource(mRes, R.drawable.cor);
			while (true) {
				try {
					c = holder.lockCanvas(null);
					if (c != null)
						synchronized (holder) {
							doDraw(c);
						}
				} finally {
					if (c != null) {
						holder.unlockCanvasAndPost(c);
					}
				}
			}
		}

		public void doDraw(Canvas c) {
			// c.drawBitmap(bg, 0,0, null);
			c.drawColor(Color.WHITE);
			Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
			paint.setColor(Color.BLACK);

			// draw coordinate
			c.drawLine(0, c.getHeight() / 2, c.getWidth(), c.getHeight() / 2,
					paint);
			c.drawLine(c.getWidth() / 2, 0, c.getWidth() / 2, c.getHeight(),
					paint);
			float z = zoom;
			float ofx = offsetX;
			float ofy = offsetY;
			for (int i = 0; i < ps.length; i++) {
				Position p = ps[i];
				float x = ((float) p.x * c.getWidth() / 30000*z
						+ c.getWidth() / 2 + ofx*z) -androidIcon.getWidth()/2;
				float y = ((float) p.y * c.getHeight()
						/ 30000*z + c.getHeight() / 2 + ofy*z)-androidIcon.getHeight()/2;
				c.drawBitmap(androidIcon, x, y, paint);
			}
		}
	}

	public Thread getThread() {
		return thread;
	}

	@Override
	public void surfaceChanged(SurfaceHolder holder, int format, int width,
			int height) {

	}

	@Override
	public void surfaceCreated(SurfaceHolder holder) {
		running = true;
		ps = NormTest.generateMap();
		thread.start();
		zoom = 1;
	}

	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {
		running = false;
	}

	public void zoomIn() {
		zoom = zoom / 2;

	}

	public void zoomOut() {
		zoom = zoom * 2;
	}
}
分享到:
评论

相关推荐

    E04_asdasd_

    【标题】"E04_asdasd_" 暗示着这是一个与自动化Linux输入相关的代码或教程,可能是某个课程或项目的一部分,编号为E04。"asdasd" 在这里可能是一个占位符标签,没有特定含义。 【描述】"this is a code to automate...

    00f5mebk320_asdasd_

    很抱歉,根据您提供的信息,标题"00f5mebk320_asdasd_"和描述"this is si a ito adoijwqadw"并没有包含任何明显的IT知识点。标签"asdasd"同样没有提供具体的信息。唯一的线索是压缩包子文件的文件名称列表中的"00f5...

    老师继续asdasd出现在持续

    啊实打实大苏打似的大苏打额前问问去恶趣味企鹅去大大飒飒大苏打asdaksdhklas

    175asdasd工具+查询+短信 原版.zip

    175asdasd工具+查询+短信 原版.zip

    Test1asdasd

    在这个名为"Test1asdasd"的压缩包文件中,我们可以猜测它可能包含了一个与Vue.js相关的项目或资源,特别是考虑到"AudioPlaySation"这个文件名,它可能是一个音频播放器的实现,或者是与音频处理和播放有关的项目。...

    第一章 Linux命令Asdasd

    Linux 命令和操作系统基础知识 操作系统(OS)是现代计算机系统中最基本和最重要的系统软件,是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展。操作系统的主要作用是管理好硬件设备,并为用户和应用程序...

    nginx-goodies-nginx-sticky-module-ng-s12451asdasd

    目前的项目网站架构中使用了F5和nginx,F5用来做负载均衡,nginx只用作反向代理服务器。最近应客户的要求准备去掉F5,使用软负载。大家都知道nginx抗并发能力强,又可以做负载均衡,而且使用nginx对我们目前的网站...

    balantflow-qianhai-component-1.5.100.jar.bak

    asdasd

    editplus 代码编辑器html c++ jsp css

    asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd 功能增强(by jiuk2k@CCF): 如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应1 或 123 或 12345 或 … 大家根据需要定制 相关内容...

    查询购买外链是否被删除程序 工具下载

    图中写1的地方,需要填写 假如你往www.163.com/asdasd/asdasd/sadas.html 发外链 (一行一个)可以填写无限行-理论上 图中写2的地方,需要填写 你的域名,为了精准性建议只放顶级域名 baidu.com 也是一行一个。你可以...

    数据库连接字符窜大全

    Pwd=asdasd; ``` 其中: - `Driver={SQL Server}`: 指定使用SQL Server ODBC驱动程序。 - `Server=Aron1`: 指定服务器名称。 - `Database=pubs`: 指定数据库名称。 - `Uid=sa`: 指定登录用户名。 - `Pwd=...

    各种数据库连接方法

    Pwd=asdasd; ``` 这段配置字符串指定了以下内容: - `Driver={SQL Server}`:指定使用的数据库驱动为 SQL Server。 - `Server=Aron1`:指定目标服务器名为 Aron1。 - `Database=pubs`:指定要连接的数据库名称为 ...

    数据库连接字符串大全

    Pwd=asdasd;" ``` 这里,“Driver”指定了驱动程序,“Server”是服务器名称,“Database”是数据库名称,“Uid”和“Pwd”分别表示用户ID和密码。 2. **Trusted Connection(信任连接)**: ```plaintext ...

    数据库连接大全--各种数据库连接方式

    Pwd=asdasd;" * 可信连接:"Driver={SQL Server};Server=Aron1;Database=pubs;Trusted_Connection=yes;" * 提示用户名和密码:oConn.Properties("Prompt") = adPromptAlways;oConn.Open "Driver={SQL Server};...

    数据库连接字符串代码大全(收藏)

    Pwd=asdasd;" ``` - **信任连接**: ```plaintext "Driver={SQL Server};Server=Aron1;Database=pubs;Trusted_Connection=yes;" ``` **2. OLE DB (Object Linking and Embedding Database)** OLE DB 是一种...

    .net 各数据库连接串.docx

    Pwd=asdasd;" ``` - **说明**:这种方式适用于需要指定用户名和密码的情况。 - **参数解析**: - `Driver={SQL Server}`:指定了驱动类型为 SQL Server。 - `Server=Aron1`:服务器名称。 - `Database=pubs`:...

    计算器运算加减乘除法德运算啊哈哈

    【标签】:“asdasd” —— 这个标签没有提供具体的知识点,可能是输入错误。 【压缩包子文件的文件名称列表】:未提供具体的文件信息,无法生成相关知识点。 总结来说,计算器的运算加减乘除法在计算机科学中扮演...

    NET中各种数据库连接大全

    Pwd=asdasd;` - 说明:这里指定了驱动器为SQL Server,服务器名为Aron1,数据库名为pubs,用户名为sa,密码为asdasd。 - **信任连接**: - 连接字符串: `Driver={SQL Server};Server=Aron1;Database=pubs;Trusted_...

Global site tag (gtag.js) - Google Analytics