最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android實(shí)現(xiàn)多點(diǎn)觸摸應(yīng)用

 更新時(shí)間:2022年05月18日 11:14:54   作者:#冷風(fēng)那個(gè)吹#  
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)多點(diǎn)觸摸應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了android實(shí)現(xiàn)多點(diǎn)觸摸應(yīng)用的具體代碼,供大家參考,具體內(nèi)容如下

JhkMultiTouchActivity.java

package com.android.forlinx;
?
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
?
public class JhkMultiTouchActivity extends Activity {
? ? /** Called when the activity is first created. */
? ? @Override
? ? public void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ?// ? setContentView(R.layout.main);
? ? ? ??
? ? ? //隱藏標(biāo)題欄
?
? ? ? ? ? ? ? ? requestWindowFeature(Window.FEATURE_NO_TITLE);
? ? ? ? ? ? ? ? //設(shè)置成全屏
? ? ? ? ? ? ? ? ? getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
? ? ? ? ? ? ? ? ? ? ? ? WindowManager.LayoutParams.FLAG_FULLSCREEN);
? ? ? ? ? ? ? ? //設(shè)置為上面的MTView
? ? ? ? ? ? ? ? setContentView(new MTView(this));
?
? ? }
}

MTView.java

package com.android.forlinx;
?
?
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
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 = "請(qǐng)隨便觸摸屏幕進(jìn)行測(cè)試";
?? ?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能獲得輸入焦點(diǎn)
?? ??? ?setFocusableInTouchMode(true); // 確保能接收到觸屏事件
?? ??? ?init();
?? ?}
?
?? ?private void init() {
?? ??? ?// 初始化10個(gè)不同顏色的畫筆
?? ??? ?textPaint.setColor(Color.GREEN);
?? ??? ?textPaint.setTypeface(null);
?? ??? ?textPaint.setAlpha(200);
?? ??? ?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]);
?? ??? ??? ?touchPaints[i].setAlpha(50);
?? ??? ?}
?? ?}
?
?? ?/*
?? ? * 處理觸屏事件
?? ? */
?? ?@Override
?? ?public boolean onTouchEvent(MotionEvent event) {
?? ??? ?// 獲得屏幕觸點(diǎn)數(shù)量
?? ??? ?int pointerCount = event.getPointerCount();
?? ??? ?if (pointerCount > MAX_TOUCHPOINTS) {
?? ??? ??? ?pointerCount = MAX_TOUCHPOINTS;
?? ??? ?}
?? ??? ?
?? ??? ?// 鎖定Canvas,開始進(jìn)行相應(yīng)的界面處理
?? ??? ?Canvas c = getHolder().lockCanvas();
?? ??? ?if (c != null) {
?? ??? ??? ?c.drawColor(Color.BLACK);
?? ??? ??? ?if (event.getAction() == MotionEvent.ACTION_UP) {
?? ??? ??? ??? ?// 當(dāng)手離開屏幕時(shí),清屏
?? ??? ??? ?} else {
?? ??? ??? ??? ?// 先在屏幕上畫一個(gè)十字,然后畫一個(gè)圓
?? ??? ??? ??? ?for (int i = 0; i < pointerCount; i++) {
?? ??? ??? ??? ??? ?// 獲取一個(gè)觸點(diǎn)的坐標(biāo),然后開始繪制
?? ??? ??? ??? ??? ?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;
?? ?}
?
?? ?/**
?? ? * 畫十字及坐標(biāo)信息
?? ? *
?? ? * @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);
?? ?}
?
?? ?/*
?? ? * 進(jìn)入程序時(shí)背景畫成黑色,然后把“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) {
?? ?}
?
}

效果圖

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android開發(fā)中遇到端口號(hào)占用問題解決方法

    Android開發(fā)中遇到端口號(hào)占用問題解決方法

    這篇文章主要介紹了Android開發(fā)中遇到端口號(hào)占用問題解決方法,本文給出了一個(gè)簡(jiǎn)潔實(shí)用的方法來解決這個(gè)煩人的問題,需要的朋友可以參考下
    2015-06-06
  • Android Studio設(shè)置、改變字體和主題的方法

    Android Studio設(shè)置、改變字體和主題的方法

    這篇文章主要介紹了Android Studio設(shè)置、改變字體和主題的方法,需要的朋友可以參考下
    2018-03-03
  • 設(shè)置界面開發(fā)Preference Library數(shù)據(jù)重建機(jī)制詳解

    設(shè)置界面開發(fā)Preference Library數(shù)據(jù)重建機(jī)制詳解

    這篇文章主要為大家介紹了設(shè)置界面開發(fā)利器Preference Library數(shù)據(jù)重建機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Android 仿淘寶、京東商品詳情頁(yè)向上拖動(dòng)查看圖文詳情控件DEMO詳解

    Android 仿淘寶、京東商品詳情頁(yè)向上拖動(dòng)查看圖文詳情控件DEMO詳解

    本文給大家介紹android 仿淘寶、京東商品詳情頁(yè)向上拖動(dòng)查看圖文詳情控件DEMO詳解,使用兩個(gè)scrollView,兩個(gè)scrollView 豎直排列,通過自定義viewGroup來控制兩個(gè)scrollView的豎直排列,以及滑動(dòng)事件的處理。對(duì)android 拖動(dòng)查看圖文詳情知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-09-09
  • Android SharedPreferences存儲(chǔ)的正確寫法

    Android SharedPreferences存儲(chǔ)的正確寫法

    這篇文章主要介紹了Android SharedPreferences存儲(chǔ)的正確寫法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • android實(shí)現(xiàn)手寫簽名功能

    android實(shí)現(xiàn)手寫簽名功能

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)手寫簽名功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Flutter 完美的驗(yàn)證碼輸入框?qū)崿F(xiàn)

    Flutter 完美的驗(yàn)證碼輸入框?qū)崿F(xiàn)

    這篇文章主要介紹了Flutter 完美的驗(yàn)證碼輸入框?qū)崿F(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • android仿微信支付寶的支付密碼輸入框示例

    android仿微信支付寶的支付密碼輸入框示例

    本篇文章主要介紹了android仿微信支付寶的支付密碼輸入框示例,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-02-02
  • android實(shí)現(xiàn)文件讀寫功能

    android實(shí)現(xiàn)文件讀寫功能

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)文件讀寫功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Android協(xié)程的7個(gè)重要知識(shí)點(diǎn)匯總

    Android協(xié)程的7個(gè)重要知識(shí)點(diǎn)匯總

    在現(xiàn)代Android應(yīng)用開發(fā)中,協(xié)程(Coroutine)已經(jīng)成為一種不可或缺的技術(shù),它不僅簡(jiǎn)化了異步編程,還提供了許多強(qiáng)大的工具和功能,可以在高階場(chǎng)景中發(fā)揮出色的表現(xiàn),本文將深入探討Coroutine重要知識(shí)點(diǎn),幫助開發(fā)者更好地利用Coroutine來構(gòu)建高效的Android應(yīng)用
    2023-09-09

最新評(píng)論

吐鲁番市| 桃园市| 盘山县| 无锡市| 金湖县| 什邡市| 邳州市| 稷山县| 丰原市| 大港区| 定远县| 新和县| 北海市| 富宁县| 筠连县| 黄平县| 宝坻区| 油尖旺区| 阿鲁科尔沁旗| 射阳县| 利辛县| 东乡| 横峰县| 永寿县| 吉隆县| 得荣县| 岑巩县| 栖霞市| 安新县| 上栗县| 措勤县| 罗山县| 大港区| 信阳市| 凌海市| 拉孜县| 达日县| 莱芜市| 克拉玛依市| 乌拉特前旗| 安溪县|