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

Android實(shí)現(xiàn)多點(diǎn)觸摸操作

 更新時(shí)間:2022年05月18日 09:40:57   作者:風(fēng)風(fēng)風(fēng)一樣  
這篇文章主要介紹了Android實(shí)現(xiàn)多點(diǎn)觸摸操作,實(shí)現(xiàn)圖片的放大、縮小和旋轉(zhuǎn)等處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Android中的多點(diǎn)觸摸可以實(shí)現(xiàn)圖片的放大、縮小和旋轉(zhuǎn)等處理,供大家參考,具體內(nèi)容如下

主要通過(guò)setOnTouchListener方法來(lái)監(jiān)聽用戶的觸摸事件,通過(guò)event.getX(0)和 event.getX(1)來(lái)獲取第一個(gè)觸控點(diǎn)和第二個(gè)觸控點(diǎn)的x軸(或者y軸)坐標(biāo),接下來(lái)在MotionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE、MotionEvent.ACTION_UP這幾種情況中來(lái)對(duì)獲取到的x軸或者y軸進(jìn)行處理,就能實(shí)現(xiàn)我們想要的效果了。

下面這個(gè)小Demo實(shí)現(xiàn)了對(duì)圖片的放大和縮小處理:

package com.example.administrator.translation;
?
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
?
?
public class MainActivity extends ActionBarActivity {
?
? ? private RelativeLayout layout;
? ? private ImageView iv;
?
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
?
? ? ? ? layout = (RelativeLayout) findViewById(R.id.layout);
? ? ? ? iv = (ImageView) findViewById(R.id.iv);
?
?
? ? ? ? layout.setOnTouchListener(new View.OnTouchListener() {
?
? ? ? ? ? ? float currentDistance;
? ? ? ? ? ? float lastDistance = -1;
?
? ? ? ? ? ? @Override
? ? ? ? ? ? public boolean onTouch(View v, MotionEvent event) {
? ? ? ? ? ? ? ? switch (event.getAction()) {
? ? ? ? ? ? ? ? ? ? case MotionEvent.ACTION_DOWN:
?
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case MotionEvent.ACTION_MOVE:
? ? ? ? ? ? ? ? ? ? ? ? //判斷幾個(gè)觸控點(diǎn)
? ? ? ? ? ? ? ? ? ? ? ? if (event.getPointerCount() >= 2) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? //兩點(diǎn)之間x的坐標(biāo)差
? ? ? ? ? ? ? ? ? ? ? ? ? ? float offsetX = event.getX(0) - event.getX(1);
? ? ? ? ? ? ? ? ? ? ? ? ? ? //兩點(diǎn)之間y的坐標(biāo)差
? ? ? ? ? ? ? ? ? ? ? ? ? ? float offsetY = event.getY(0) - event.getY(1);
? ? ? ? ? ? ? ? ? ? ? ? ? ? //兩點(diǎn)之間的距離
? ? ? ? ? ? ? ? ? ? ? ? ? ? currentDistance = (float) Math.sqrt(offsetX * offsetX + offsetY * offsetY);
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (lastDistance < 0) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //沒(méi)有縮放
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lastDistance = currentDistance;
? ? ? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (currentDistance - lastDistance > 5) {//放大
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) iv.getLayoutParams();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lp.width = (int) (1.1f * iv.getWidth());
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lp.height = (int) (1.1f * iv.getHeight());
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? iv.setLayoutParams(lp);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lastDistance = currentDistance;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } else if (currentDistance - lastDistance < -5) {//縮小
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int currentIvWidth = iv.getWidth();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int currentIvHeight = iv.getHeight();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (currentIvWidth > 50 && currentIvHeight >50) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) iv.getLayoutParams();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lp.width = (int) (0.9f * iv.getWidth());
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lp.height = (int) (0.9f * iv.getHeight());
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? iv.setLayoutParams(lp);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lastDistance = currentDistance;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case MotionEvent.ACTION_UP:
?
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return true;
? ? ? ? ? ? }
? ? ? ? });
?
?
? ? }
?
?
? ? @Override
? ? public boolean onCreateOptionsMenu(Menu menu) {
? ? ? ? // Inflate the menu; this adds items to the action bar if it is present.
? ? ? ? getMenuInflater().inflate(R.menu.menu_main, menu);
? ? ? ? return true;
? ? }
?
? ? @Override
? ? public boolean onOptionsItemSelected(MenuItem item) {
? ? ? ? // Handle action bar item clicks here. The action bar will
? ? ? ? // automatically handle clicks on the Home/Up button, so long
? ? ? ? // as you specify a parent activity in AndroidManifest.xml.
? ? ? ? int id = item.getItemId();
?
? ? ? ? //noinspection SimplifiableIfStatement
? ? ? ? if (id == R.id.action_settings) {
? ? ? ? ? ? return true;
? ? ? ? }
?
? ? ? ? return super.onOptionsItemSelected(item);
? ? }
}

xml代碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:id="@+id/layout"
? ? xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
? ? android:layout_height="match_parent" tools:context=".MainActivity">
?
? ? <ImageView
? ? ? ? android:id="@+id/iv"
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:src="@mipmap/a"
? ? ? ? android:layout_height="wrap_content" />
?
</RelativeLayout>

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

相關(guān)文章

最新評(píng)論

微山县| 常德市| 康乐县| 墨玉县| 潢川县| 琼中| 金乡县| 鄂伦春自治旗| 普格县| 新竹市| 孝昌县| 皮山县| 秦皇岛市| 湖北省| 阳西县| 龙州县| 连平县| 浦北县| 重庆市| 万荣县| 兴隆县| 丰宁| 恭城| 广南县| 麻栗坡县| 钟山县| 武义县| 大安市| 调兵山市| 五寨县| 汉阴县| 忻城县| 江川县| 金寨县| 西藏| 澄迈县| 锡林浩特市| 信阳市| 乌鲁木齐县| 高碑店市| 博客|