日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发之多点触摸(Multitouch)

發布時間:2025/3/15 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发之多点触摸(Multitouch) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自: http://www.ideasandroid.com/archives/tag/surfaceview

???? 如果您對開發多點觸摸程序感興趣的話,那么本文將是一個很好的開始,android應用程序開發中,多點觸摸不是那么遙不可及,實現起來也很簡單,本例只需要兩個類就能實現多點觸摸。

首先來看看我們的視圖類MTView.java:

??

package?com.ideasandroid.demo;

import?android.content.Context;
import?android.graphics.Canvas;
import?android.graphics.Color;
import?android.graphics.Paint;
import?android.view.MotionEvent;
import?android.view.SurfaceHolder;
import?android.view.SurfaceView;

public?class?MTView?extends?SurfaceView?implements?SurfaceHolder.Callback?{

????
private?static?final?int?MAX_TOUCHPOINTS?=?10;
????
private?static?final?String?START_TEXT?=?"請隨便觸摸屏幕進行測試";
????
private?Paint?textPaint?=?new?Paint();
????
private?Paint?touchPaints[]?=?new?Paint[MAX_TOUCHPOINTS];
????
private?int?colors[]?=?new?int[MAX_TOUCHPOINTS];

????
private?int?width,?height;
????
private?float?scale?=?1.0f;

????
public?MTView(Context?context)?{
????????
super(context);
????????SurfaceHolder?holder?
=?getHolder();
????????holder.addCallback(
this);
????????setFocusable(
true);?//?確保我們的View能獲得輸入焦點
????????setFocusableInTouchMode(true);?//?確保能接收到觸屏事件
????????init();
????}

????
private?void?init()?{
????????
//?初始化10個不同顏色的畫筆
????????textPaint.setColor(Color.WHITE);
????????colors[
0]?=?Color.BLUE;
????????colors[
1]?=?Color.RED;
????????colors[
2]?=?Color.GREEN;
????????colors[
3]?=?Color.YELLOW;
????????colors[
4]?=?Color.CYAN;
????????colors[
5]?=?Color.MAGENTA;
????????colors[
6]?=?Color.DKGRAY;
????????colors[
7]?=?Color.WHITE;
????????colors[
8]?=?Color.LTGRAY;
????????colors[
9]?=?Color.GRAY;
????????
for?(int?i?=?0;?i?<?MAX_TOUCHPOINTS;?i++)?{
????????????touchPaints[i]?
=?new?Paint();
????????????touchPaints[i].setColor(colors[i]);
????????}
????}

????
/*
?????*?處理觸屏事件
?????
*/
????@Override
????
public?boolean?onTouchEvent(MotionEvent?event)?{
????????
//?獲得屏幕觸點數量
????????int?pointerCount?=?event.getPointerCount();
????????
if?(pointerCount?>?MAX_TOUCHPOINTS)?{
????????????pointerCount?
=?MAX_TOUCHPOINTS;
????????}
????????
//?鎖定Canvas,開始進行相應的界面處理
????????Canvas?c?=?getHolder().lockCanvas();
????????
if?(c?!=?null)?{
????????????c.drawColor(Color.BLACK);
????????????
if?(event.getAction()?==?MotionEvent.ACTION_UP)?{
????????????????
//?當手離開屏幕時,清屏
????????????}?else?{
????????????????
//?先在屏幕上畫一個十字,然后畫一個圓
????????????????for?(int?i?=?0;?i?<?pointerCount;?i++)?{
????????????????????
//?獲取一個觸點的坐標,然后開始繪制
????????????????????int?id?=?event.getPointerId(i);
????????????????????
int?x?=?(int)?event.getX(i);
????????????????????
int?y?=?(int)?event.getY(i);
????????????????????drawCrosshairsAndText(x,?y,?touchPaints[id],?i,?id,?c);
????????????????}
????????????????
for?(int?i?=?0;?i?<?pointerCount;?i++)?{
????????????????????
int?id?=?event.getPointerId(i);
????????????????????
int?x?=?(int)?event.getX(i);
????????????????????
int?y?=?(int)?event.getY(i);
????????????????????drawCircle(x,?y,?touchPaints[id],?c);
????????????????}
????????????}
????????????
//?畫完后,unlock
????????????getHolder().unlockCanvasAndPost(c);
????????}
????????
return?true;
????}

????
/**
?????*?畫十字及坐標信息
?????*
?????*?
@param?x
?????*?
@param?y
?????*?
@param?paint
?????*?
@param?ptr
?????*?
@param?id
?????*?
@param?c
?????
*/
????
private?void?drawCrosshairsAndText(int?x,?int?y,?Paint?paint,?int?ptr,
????????????
int?id,?Canvas?c)?{
????????c.drawLine(
0,?y,?width,?y,?paint);
????????c.drawLine(x,?
0,?x,?height,?paint);
????????
int?textY?=?(int)?((15?+?20?*?ptr)?*?scale);
????????c.drawText(
"x"?+?ptr?+?"="?+?x,?10?*?scale,?textY,?textPaint);
????????c.drawText(
"y"?+?ptr?+?"="?+?y,?70?*?scale,?textY,?textPaint);
????????c.drawText(
"id"?+?ptr?+?"="?+?id,?width?-?55?*?scale,?textY,?textPaint);
????}

????
/**
?????*?畫圓
?????*
?????*?
@param?x
?????*?
@param?y
?????*?
@param?paint
?????*?
@param?c
?????
*/
????
private?void?drawCircle(int?x,?int?y,?Paint?paint,?Canvas?c)?{
????????c.drawCircle(x,?y,?
40?*?scale,?paint);
????}

????
/*
?????*?進入程序時背景畫成黑色,然后把“START_TEXT”寫到屏幕
?????
*/
????
public?void?surfaceChanged(SurfaceHolder?holder,?int?format,?int?width,
????????????
int?height)?{
????????
this.width?=?width;
????????
this.height?=?height;
????????
if?(width?>?height)?{
????????????
this.scale?=?width?/?480f;
????????}?
else?{
????????????
this.scale?=?height?/?480f;
????????}
????????textPaint.setTextSize(
14?*?scale);
????????Canvas?c?
=?getHolder().lockCanvas();
????????
if?(c?!=?null)?{
????????????
//?背景黑色
????????????c.drawColor(Color.BLACK);
????????????
float?tWidth?=?textPaint.measureText(START_TEXT);
????????????c.drawText(START_TEXT,?width?
/?2?-?tWidth?/?2,?height?/?2,
????????????????????textPaint);
????????????getHolder().unlockCanvasAndPost(c);
????????}
????}

????
public?void?surfaceCreated(SurfaceHolder?holder)?{
????}

????
public?void?surfaceDestroyed(SurfaceHolder?holder)?{
????}

}

?

?

代碼中都做了相應的注釋,這里就不多說。

?? ? ? ?接下來看看我們的Activity,MultitouchVisible.java

?

?

package?com.ideasandroid.demo;

import?android.app.Activity;
import?android.os.Bundle;
import?android.view.Window;
import?android.view.WindowManager;

public?class?MultitouchVisible?extends?Activity?{
????@Override
????
public?void?onCreate(Bundle?savedInstanceState)?{
????????
super.onCreate(savedInstanceState);
????????
//隱藏標題欄
????????requestWindowFeature(Window.FEATURE_NO_TITLE);
????????
//設置成全屏
????????getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
????????????????WindowManager.LayoutParams.FLAG_FULLSCREEN);
????????
//設置為上面的MTView
????????setContentView(new?MTView(this));
????}
}

轉載于:https://www.cnblogs.com/KiloNet/archive/2011/03/29/1999238.html

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的Android开发之多点触摸(Multitouch)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产妇女视频 | 大尺度做爰呻吟舌吻情头 | 亚洲av成人精品午夜一区二区 | 新婚之夜玷污岳丰满少妇在线观看 | 久久77777| 一级香蕉视频在线观看 | 在线黄色观看 | 国产亚洲制服欧洲高清一区 | 亚洲欧美激情一区二区三区 | 综合av| 偷拍一区二区三区四区 | 日本男人天堂网 | 国产免费久久久 | 激情小说专区 | 三级影片在线免费观看 | 伦av综合一区 | 亚洲国产精品久久AV | 伦理久久| 天天射夜夜| 精品中文字幕在线 | 国产色91 | 色狠狠av | 夜夜se| 动漫美女被到爽流 | 久久久久极品 | 操操操干干干 | 日韩精品影视 | 五月婷婷综合色 | 欧美日韩激情一区二区 | 日本在线视频免费观看 | 超碰.com| zzjizzji亚洲日本少妇 | 国产精品久久久久久久久免费相片 | 亚洲色图1 | 国产精品秘入口18禁麻豆免会员 | 精品国产69| 不卡二区 | 免费的av| 欧美一区二区三区在线视频 | 强行挺进皇后紧窄湿润小说 | 黄色三级生活片 | 久久精品国产亚洲AV无码男同 | 欧美成视频 | 色香蕉影院 | 天天做天天干 | 牛牛视频在线观看 | 亚洲不卡免费视频 | 性xxxx视频 | 日韩一级片中文字幕 | 午夜亚洲成人 | 久热这里只有精品在线 | 国产精品第八页 | 亚洲熟女一区 | 久久久精品人妻一区二区三区色秀 | 免费av软件 | 欧美激情xxx | 永久av在线免费观看 | 日韩三区在线 | 一级丰满大乳hd高清 | 小泽玛利亚一区二区三区 | 黄色av网站网址 | 三区在线 | 妖精视频在线观看 | 一本色道久久综合亚洲精品按摩 | 日本中文字幕在线观看 | 婷婷国产一区二区三区 | 国产精品老熟女一区二区 | 黄色国产在线视频 | 欧美激情啪啪 | 国产嫩草影院久久久 | 中文字幕人妻熟女人妻a片 麻豆91视频 | 欧美久久久 | 日本乱大交xxxx公交车 | 日本欧美久久久久免费播放网 | 在线中文字幕日韩 | 国产又爽又黄无码无遮挡在线观看 | 国内偷拍久久 | 日韩欧美中文字幕在线播放 | 天天躁日日躁狠狠躁免费麻豆 | 91看片免费看 | 69er小视频 | 91免费视频观看 | 三浦惠理子aⅴ一二三区 | 亚洲国产精品一区二区尤物区 | 亚洲天堂欧美在线 | 欧美日韩性视频 | 亚洲AV无码阿娇国产精品 | 中文字幕在线不卡视频 | 中文字幕色图 | 3d欧美精品动漫xxxx无尽 | 三上悠亚人妻中文字幕在线 | 神马伦理视频 | 91手机视频在线观看 | 日本韩国在线 | 成人免费影片 | 日本亚洲欧美在线 | 国产精品主播一区二区 | 欧美九九视频 | 国产女人高潮视频 |