2016-02-03 5 views
0

Итак, у меня есть относительный макет, содержащий изображение. У меня есть 10-20 изображений в папке с рисунком и хэш-карта, в которой хранятся эти изображения.Как изменить изображения в представлении изображения на fling

При прокручивании под изображением слева направо он должен перейти к следующему изображению. При каждом прокручивании, оно должно измениться на следующее изображение из hashmap.

Я совершенно новичок в программировании на java и android и в любом случае оцениваю.

Это то, что у меня есть:

<?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.bschiranth.homework2_chiranthbs.MainActivity"> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/alice" 
    android:onClick="onClick" 
    android:clickable="true" 
    android:src="@drawable/alice"/> 

    <SeekBar 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/zoombar" 
     android:max="100" 
     android:progress="50" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true"/> 
    </RelativeLayout> 

и мой Java: @Override общественного логический onFling (MotionEvent event1, MotionEvent event2, поплавок velocityX, поплавок velocityY) { Log.d ("интрижка »,« Выполнение броска »);

 MovieData movieData = new MovieData(); 
     HashMap hashMap = new HashMap(); 
     for(int i=1;i<movieData.getSize();i++) 
     { 
      hashMap = movieData.getItem(i); 
     } 

     if(event1.getX()-event2.getX()> SWIPE_MIN_DISTANCE && Math.abs(velocityX)>SWIPE_THRESHOLD_VELOCITY) 
     { 
      Toast.makeText(Activity_Control.this, 
        "its flinging right to left", Toast.LENGTH_SHORT).show(); 
      imageView.setImageResource(R.drawable.avatar); 
     } 
     if(event2.getX()-event1.getX()> SWIPE_MIN_DISTANCE && Math.abs(velocityX)>SWIPE_THRESHOLD_VELOCITY) 
     { 
      Toast.makeText(Activity_Control.this, 
        "its flinging left to right", Toast.LENGTH_SHORT).show(); 
      imageView.setImageResource(R.drawable.avengers); 
     } 
     return true; 
    } 
+0

, проводя ImageView вы хотите изменить изображение правой –

+0

, проводя ниже изображения я думаю, так как я с помощью жестов и onFling() метода –

+0

Я прилагаю код найти, что я надеюсь, что это поможет вам –

ответ

0

Лучше вы можете использовать вид пейджера вместо ImageView

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<android.support.v4.view.ViewPager 
    android:id="@+id/myfivepanelpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

    </LinearLayout> 

ViewPagerAdapter.java

 import android.app.Activity; 
     import android.os.Parcelable; 
     import android.support.v4.view.PagerAdapter; 
     import android.support.v4.view.ViewPager; 
    import android.view.View; 
     import android.view.ViewGroup.LayoutParams; 
    import android.widget.ImageView; 
    import android.widget.ImageView.ScaleType; 

     public class ViewPagerAdapter extends PagerAdapter { 

     Activity activity; 
     int imageArray[]; 

     public ViewPagerAdapter(Activity act, int[] imgArra) { 
     imageArray = imgArra; 
     activity = act; 
     } 

     public int getCount() { 
     return imageArray.length; 
     } 

     public Object instantiateItem(View collection, int position) { 
      ImageView view = new ImageView(activity); 
     view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
     LayoutParams.FILL_PARENT)); 
     view.setScaleType(ScaleType.FIT_XY); 
     view.setBackgroundResource(imageArray[position]); 
      ((ViewPager) collection).addView(view, 0); 
      return view; 
      } 

      @Override 
      public void destroyItem(View arg0, int arg1, Object arg2) { 
      ((ViewPager) arg0).removeView((View) arg2); 
      } 

      @Override 
      public boolean isViewFromObject(View arg0, Object arg1) { 
      return arg0 == ((View) arg1); 
      } 

      @Override 
     public Parcelable saveState() { 
      return null; 
      } 
      } 

PageIndicatorActivity.java

public class PageIndicatorActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra); 
    ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager); 
    myPager.setAdapter(adapter); 
    myPager.setCurrentItem(0); 
    } 

    private int imageArra[] = { R.drawable.antartica1, R.drawable.antartica2, 
    R.drawable.antartica3, R.drawable.antartica4, 
    R.drawable.antartica5, R.drawable.antartica6, 
    R.drawable.antartica7, R.drawable.antartica8 }; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
    } 

    } 

     public int getCount() { 
     return imageArray.length; 
     } 

    public Object instantiateItem(View collection, int position) { 
    ImageView view = new ImageView(activity); 
    view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
    LayoutParams.FILL_PARENT)); 
    view.setScaleType(ScaleType.FIT_XY); 
    view.setBackgroundResource(imageArray[position]); 
     ((ViewPager) collection).addView(view, 0); 
     return view; 
     } 

     @Override 
    public void destroyItem(View arg0, int arg1, Object arg2) { 
    ((ViewPager) arg0).removeView((View) arg2); 
    } 

     @Override 
     public boolean isViewFromObject(View arg0, Object arg1) { 
     return arg0 == ((View) arg1); 
     } 

     @Override 
    public Parcelable saveState() { 
     return null; 
    } 
    } 
+0

на самом деле его проблемы назначения и мы должны использовать только изображение :(Но спасибо за другой подход –

0

Это может быть сделано путем ViewFlipper как описано ниже.

Это ваш файл Activity.xml

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/view_flipper" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".HowToUseActivity" > 
    <ImageView 
     android:id="@+id/imageHowToUse" 
     android:contentDescription="@string/app_name" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:src="@mipmap/screen_1" /> 
</ViewFlipper> 

DECLARE требуются переменные в классе активности

private int number = 0; 
private float initialX; 
private ImageView imageView; 

в ваших Activity «ы onCreate(...) метод извлечения ImageView

imageView = (ImageView) findViewById(R.id.imageHowToUse); 

переопределение й е метод onTouchEvent(...) в том же деятельностях

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    switch(event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      initialX = event.getX(); 
      break; 
     case MotionEvent.ACTION_UP: 
      float finalX = event.getX(); 
      if (initialX > finalX) { 
       if (number >= 3) { 
        break; 
       } 
       next(); 
      } else { 
       if(number <= 0) { 
        break; 
       } 
       previous(); 
      } 
      break; 
    } 
    return false; 
} 

private void next() { 
    number++; 
    imageView.setImageResource(getImage()); 
} 

private void previous() { 
    number--; 
    imageView.setImageResource(getImage()); 
} 

затем написать метод getImage(), чтобы получить следующее изображение, которое вы хотите отобразить

private int getImage() { 
    int resource = R.mipmap.screen_1; 
    switch(number) { 
     case 0: 
      resource = R.mipmap.screen_1; 
     break; 
     case 1: 
      resource = R.mipmap.screen_2; 
      break; 
     case 2: 
      resource = R.mipmap.screen_3; 
      break; 
    } 
    return resource; 
} 

это работает код в моем проекте. Это поможет вам.

ПРИМЕЧАНИЕ: R.mipmap.screen_ * - это ресурс изображения, присутствующий в моем каталоге ресурсов.

 Смежные вопросы

  • Нет связанных вопросов^_^