2016-05-11 3 views
0

В моем приложении для Android мне нужно создать действия zoom. В моем приложении несколько действий начинаются с scrollview, и этот код не распознает scrollview. Как я могу сделать масштабирование для прокручиваемой активности? Это один из моих макетов.Как сделать масштабирование в прокрутке в андроиде?

также попытался также ScaleGestureDetector и How to make zoomable scrollview?

хочет сделать увеличение/уменьшение изображения Scrollview. Thanx ваша помощь будет appriciated

заранее спасибо

Это мой Компоновка

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/horizontalScrollView" 
android:layout_gravity="center" 
     android:fillViewport="false"> 



    <LinearLayout 
     android:id="@+id/wd_content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 

     android:layout_gravity="center" 
     android:gravity="center" 
     android:orientation="vertical" > 

     <!-- Start Circle --> 

     <TableRow 
      android:id="@+id/row_circl1" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:layout_marginTop="30dp" 
      android:background="@mipmap/ic_launcher" > 

      <RelativeLayout 
       android:id="@+id/circle_layout2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@mipmap/ic_launcher" > 

      </RelativeLayout> 
     </TableRow> 

     <ImageView 
      android:id="@+id/img_engin_circle1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:background="@mipmap/ic_launcher" 
      android:contentDescription="TODO" 
      android:layout_gravity="center_horizontal" /> 

     <TableRow 
      android:id="@+id/row_name_circle" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:layout_marginTop="30dp" > 

      <RelativeLayout 
       android:id="@+id/circle_name_layout1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="-15dp" 
       android:background="@mipmap/ic_launcher" > 

       <ImageView 
        android:id="@+id/img_name_circle1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerHorizontal="true" 
        android:background="@mipmap/ic_launcher" 
        android:contentDescription="TODO" /> 

       <ImageView 
        android:id="@+id/img_engin_circle2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@mipmap/ic_launcher" 
        android:contentDescription="TODO" 
        android:layout_alignParentTop="true" 
        android:layout_alignParentStart="true" /> 
      </RelativeLayout> 

      <RelativeLayout 
       android:id="@+id/circle_name_layout2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="-15dp" 
       android:background="@mipmap/ic_launcher" > 

       <ImageView 
        android:id="@+id/img_name_circle2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerHorizontal="true" 
        android:background="@mipmap/ic_launcher" 
        android:contentDescription="TODO" /> 


      </RelativeLayout> 
     </TableRow> 

     <RelativeLayout 
      android:id="@+id/circle_layout1" 
      android:layout_width="match_parent" 
      android:layout_height="172dp" 
      android:background="@mipmap/ic_launcher" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentStart="true" 
      android:layout_gravity="right"> 

      <RelativeLayout 
       android:id="@+id/relativeLayout" 
       android:layout_width="match_parent" 
       android:layout_height="172dp" 
       android:background="@mipmap/ic_launcher" 
       android:layout_gravity="right" 
       android:layout_centerVertical="true" 
       android:layout_centerHorizontal="true" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/circle_layout1" 
      android:layout_width="match_parent" 
      android:layout_height="172dp" 
      android:background="@mipmap/ic_launcher" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentStart="true" 
      android:layout_gravity="right"> 

      <RelativeLayout 
       android:id="@+id/relativeLaysdfout" 
       android:layout_width="match_parent" 
       android:layout_height="172dp" 
       android:background="@mipmap/ic_launcher" 
       android:layout_gravity="right" 
       android:layout_centerVertical="true" 
       android:layout_centerHorizontal="true" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/circle_laysdfout1" 
      android:layout_width="match_parent" 
      android:layout_height="172dp" 
      android:background="@mipmap/ic_launcher" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentStart="true" 
      android:layout_gravity="right"> 

      <RelativeLayout 
       android:id="@+id/dsf" 
       android:layout_width="match_parent" 
       android:layout_height="172dp" 
       android:background="@mipmap/ic_launcher" 
       android:layout_gravity="right" 
       android:layout_centerVertical="true" 
       android:layout_centerHorizontal="true" /> 
     </RelativeLayout> 

     <!-- End Circle --> 

    </LinearLayout> 



</ScrollView> 

это моя деятельность

зум во вне работает идеально, но я не могу перемещайтесь влево или вправо или наоборот, как в нашем фотогалере.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     scrollView = (ScrollView) findViewById(R.id.horizontalScrollView); 
     horizontalScrollView = (HorizontalScrollView) findViewById(R.id.vertical); 

     gestureDetector = new GestureDetector(this, new GestureListener());  

     scaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.SimpleOnScaleGestureListener() { 
      @Override 
      public boolean onScale(ScaleGestureDetector detector) { 
       float scale = 1 - detector.getScaleFactor(); 

       float prevScale = mScale; 
       mScale += scale; 

       if (mScale < 0.1f) // Minimum scale condition: 
        mScale = 0.1f; 

       if (mScale > 10f) // Maximum scale condition: 
        mScale = 10f; 
       ScaleAnimation scaleAnimation = new ScaleAnimation(1f/prevScale, 1f/mScale, 1f/prevScale, 1f/mScale, detector.getFocusX(), detector.getFocusY()); 
       scaleAnimation.setDuration(0); 
       scaleAnimation.setFillAfter(true); 

       scrollView.startAnimation(scaleAnimation); 
       horizontalScrollView.startAnimation(scaleAnimation); 
       return true; 
      } 
     }); 
    } 

override dispatchTouchEvent() 
     @Override 
     public boolean dispatchTouchEvent(MotionEvent event) { 
      super.dispatchTouchEvent(event); 
      scaleGestureDetector.onTouchEvent(event); 
      gestureDetector.onTouchEvent(event); 
      return gestureDetector.onTouchEvent(event); 
     } 


     private class GestureListener extends GestureDetector.SimpleOnGestureListener { 
      @Override 
      public boolean onDown(MotionEvent e) { 
       return true; 
      } 
      // event when double tap occurs 
      @Override 
      public boolean onDoubleTap(MotionEvent e) { 
       // double tap fired. 
       return true; 
      } 
     } 
} 
+0

привет, вы нашли решение? – isha

+0

не все равно не найдет подходящего решения, если я буду, я поделюсь с @isha –

+0

Спасибо @mehul за ответ .. мне нужно такое же решение – isha

ответ

1

В диспетчеризации событий использования сенсорного ActionType и отделить каждый MotionEventActions и писать логику для каждого типа, в котором должно быть выполнено определенное действие.

How to make a Scrollable Layout and Zoomable Layout in an Android App?

Это может помочь вам в значительной степени.