- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
package com.synergywebdesigners.veebee;
import android.content.Intent;
import android.graphics.Matrix;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
public class FullOffer extends AppCompatActivity {
ImageView image;
TextView start,end,title,messages;
Float scale = 1f;
ScaleGestureDetector SDG;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_full_offer);
start = (TextView) findViewById(R.id.start);
end = (TextView) findViewById(R.id.end);
title = (TextView) findViewById(R.id.title);
messages = (TextView) findViewById(R.id.message);
image = (ImageView) findViewById(R.id.imageDownloaded);
Intent i = getIntent();
setTitle(i.getStringExtra("title"));//title of Application
start.setText(i.getStringExtra("start"));
end.setText(i.getStringExtra("end"));
title.setText(i.getStringExtra("title"));
messages.setText(Html.fromHtml(i.getStringExtra("message")),TextView.BufferType.SPANNABLE);
Picasso.with(FullOffer.this).load(Config.UPLOAD_LOCATION+i.getStringExtra("image")).fit().into(image);
SDG = new ScaleGestureDetector(this,new ScaleListner());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
SDG.onTouchEvent(event);
/* return true;*/
return super.onTouchEvent(event);
}
private class ScaleListner extends ScaleGestureDetector.SimpleOnScaleGestureListener{
float onScaleBegin = 0;
float onScaleEnd = 0;
@Override
public boolean onScale(ScaleGestureDetector detector) {
/* scale = scale * detector.getScaleFactor();
scale = Math.max(0.1f,Math.min(scale,5f));
matrix.setScale(scale,scale);
image.setImageMatrix(matrix);*/
scale *= detector.getScaleFactor();
image.setScaleX(scale);
image.setScaleY(scale);
return true;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
Toast.makeText(getApplicationContext(), "Your Application Pinch" ,Toast.LENGTH_SHORT).show();
onScaleBegin = scale;
return true;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
onScaleEnd = scale;
if(onScaleEnd > onScaleBegin){
Toast.makeText(getApplicationContext(),"Scaled Up By"+String.valueOf(onScaleEnd/onScaleBegin),Toast.LENGTH_SHORT).show();
}else if(onScaleEnd<onScaleBegin){
Toast.makeText(getApplicationContext(),"Scaled Down By"+String.valueOf(onScaleEnd/onScaleBegin),Toast.LENGTH_SHORT).show();
}
}
}
}
<小时/>
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:scrollbars="none"
android:background="#ffffff"
tools:context="com.synergywebdesigners.veebee.FullOffer">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView android:id="@+id/imageDownloaded"
android:layout_width="match_parent"
android:layout_height="400dp"
android:src="@drawable/abc_ic_menu_copy_mtrl_am_alpha"/>
<!-- Title Label -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="New Text"
android:textAllCaps="true"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000000"
android:textStyle="bold"
android:id="@+id/title"
android:gravity="center"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/message"
android:layout_marginLeft="20dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eff0f1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Start Date :"/>
<TextView
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="20-07-2017"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Valid Till :"/>
<TextView
android:id="@+id/end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="22-07-2017"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
我有一个 ImageView ,我有图像毕加索库来动态显示图像。我正在使用 ScaleGestureDetector 但不工作任何错误消息请帮助我。没有任何错误,但没有任何反应此代码请帮助我如何解决此问题。请帮助我
最佳答案
onTouchEvent(..)
不是每次都会调用, - 仅当 View 不处理 onTouch 事件时才会调用:您应该使用dispatchTouchEvent(MotionEvent event)
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
return SDG.onTouchEvent(event);
}
或者你可以实现View.OnTouchListener
注册一个回调,当触摸事件发送到此 View 时调用。
image.setOnTouchListener(this);
并覆盖
@Override onTouch(View v, MotionEvent event)
public boolean onTouch(View v, MotionEvent event) {
return SDG.onTouchEvent(event);
}
请参阅以下链接以获取更清晰的触摸事件图片
关于java - ScaleGestureDetector 不工作不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321728/
FullOffer.java package com.synergywebdesigners.veebee; import android.content.Intent; import android
我已按照 Android 文档中的说明将 ScaleGestureDetector 连接到 OnTouchListener。由于某些原因,ScaleGestureDetector 并不总是检测到捏合手
我使用了带有 ScaleGestureDector 类的自定义 View 。我的问题是当我以 4.5 倍放大时,我的自定义布局无法缩小。 这是我的代码: private class ScaleGest
我有一个项目,我需要使用 ScaleGestureDetector 缩放 RecyclerView。它在 RecyclerView 之外进行缩放时有效,但在 RecyclerView 上缩放时不起作用
我是一个完全的初学者,在调整一些教程代码时遇到了问题。此 Activity (gameScreen) 应包含一个名为 MapView 的自定义 View ,它扩展了 ImageView 并应允许缩放。
更新:我知道发生了什么。查看评论。 我正在尝试编写一个 ViewSwitcher,它将所有手势传递给它的第一个 child ,直到它收到一个缩放手势;然后它将它们传递给它的第二个 child ,直到该
我认为“ScaleGestureDetector”实例的“onTouchEvent()”方法应该返回“true”只有当它真正处理触摸事件时,即。 e.如果它检测到多点触控缩放手势(用两根手指)。否则我
我正在尝试在我的应用中实现缩放。但是我遇到了困难。 到目前为止我做了什么: (注意:这个应用程序是一个游戏,所以它不使用invalidate而是一个线程) 渲染和缩放: public void ren
我使用以下代码来检测 View 的 ScaleGesture。 ScaleGestureDetector 工作正常。我在布局中显示了两张图片。在检测 ScaleGesture 时,我缩小和增加了图像的
我有一个自定义的 SwipeRefreshLayout,里面有一个自定义的 GridView。我想根据捏/缩放手势更改该 GridView 的列号。我已经成功地实现了它。问题是,秤太敏感了。 例如,我
在我的 Android 应用程序中,我有一个 ImageView我希望用户能够将其向左/向右/向上/向下滑动以将图像(静态 map )更改为相邻的图像。但此外,我想要捏缩放功能和 map 本身。 我可
我的应用需要检测简单的手势(滚动、点击、长按)和双指缩放。任何一个检测器都可以独立工作 - GestureDetector.SimpleOnGestureListener 用于点击/滚动和 Scale
非常感谢您的阅读。我有一个可以缩放的 textView,当我将 "textview.setMovementMethod(new ScrollingMovementMethod());" 添加到我的代码
我有一个 Canvas ,我正在使用 ScaleGestureDetector 来放大我的 android 应用程序。这是我到目前为止的代码: //SCALING ----------
我的应用程序利用支持包来实现 Fragment s 2.2 向上。 我有一个 View使用 ZoomableView 的子类(我们称之为 ScaleGestureDetector )检测捏缩放事件。这
我正在使用 ScaleGestureDetector 来检测捏合和捏合 Action ,通过获取比例因子,如果它小于 1,则缩小,反之亦然。 但问题在于,在 Android 6.0 上,比例因子始终为
我是一名优秀的程序员,十分优秀!