2016-08-15 4 views
1

Dies ist onProgressChangeListener der seekbarSeekBar steuern Bild vergrößern

package com.example.android.seekbartest; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.ImageView; 
import android.widget.SeekBar; 

public class MainActivity extends AppCompatActivity { 

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

    iv = (ImageView) findViewById(R.id.imageView); 
    sb = (SeekBar) findViewById(R.id.seekBar); 
    sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { 
      float scale = ((progress/10.0f)+1); 
      iv.setScaleX(scale); 
      iv.setScaleY(scale); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 
} 
} 

Dies ist die XML-Aktivität ist

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.android.seekbartest.MainActivity"> 

<ImageView 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:id="@+id/imageView" 
    android:src="@drawable/test" 
    android:adjustViewBounds="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<SeekBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:max="15" 
    android:layout_below="@id/imageView" 
    android:layout_marginTop="20dp" 
    android:id="@+id/seekBar" 
    android:maxHeight="40dp" 
    android:minHeight="40dp" 
    android:thumbOffset="18dp"/> 
</RelativeLayout> 

Diese Der Ausgang

ist

enter image description here

Ich möchte das Bild in den festen Bereich sogar auf Zoom sein. Aber es kommt heraus. Irgendeine Lösungsmöglichkeit. Oder gibt es andere bessere Möglichkeiten, das Bild in dem bestimmten Bereich mit Suchleiste zu vergrößern?

+0

Setzen Sie das Image in einem Layout mit fester Breite/Höhe –

+0

der Bildansicht feste Breite und Höhe und Scaletype centerInside – lelloman

+0

@MuratK geben. Ich werde die Geräteauflösung nicht richtig kennen. Das Bild sollte mit der übergeordneten Breite übereinstimmen, und die Höhe sollte für alle Geräte, die es ausführt, relevant sein. – Krishna

Antwort

1
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.android.seekbartest.MainActivity"> 

<LinearLayout 
    android:layout_height="100dp" 
    android:layout_width="match_parent"> 
<!-- Add the height and width over here, so that your image view doesnot exceed the LinearLayout frame --> 
<ImageView 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:id="@+id/imageView" 
    android:src="@drawable/test" 
    android:adjustViewBounds="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /></LinearLayout> 

<SeekBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:max="15" 
    android:layout_below="@id/imageView" 
    android:layout_marginTop="20dp" 
    android:id="@+id/seekBar" 
    android:maxHeight="40dp" 
    android:minHeight="40dp" 
    android:thumbOffset="18dp"/> 
</RelativeLayout> 
+0

Ich werde die Geräteauflösung nicht richtig kennen. Das Bild sollte mit der übergeordneten Breite übereinstimmen, und die Höhe sollte für alle Geräte, die es ausführt, relevant sein. – Krishna

+0

Sie können die Breite des LinearLayout programmatisch festlegen! oder Sie wählen eine bestimmte Höhe des Layouts aus. und behalte die 'match-parent' für die' width' – Smit