@mr-zherart

Как реализовать слайдер изображений для приложения android?

Здравствуйте. Есть приложение, у которого имеется selector.xml и SelectorActivity.java.

Selector.xml - layout с двумя кнопками и картинкой. Картинка занимает половину высоты экрана и кнопки половину высоты экрана в ряд.
SelectorActivity - реагирует на нажатие кнопок и подгружает изображение из assets.

Нужно сделать touch слайдер изображений. Перепробовал все варианты, но никак не могу это сделать.

Прошу, подскажите решение. Сам в разработке приложений новичок (все на уровне научного тыка).

SelectorActivity (initialPath - путь откуда берутся файлы)
public class SelectorActivity extends SherlockActivity {
	
	TextView text;

	private String initialPath;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setDisplayShowHomeEnabled(true);
        
    	Intent intent = getIntent();
        initialPath = intent.getStringExtra(MainConf.INTENT_EXTRA_QRCODE);
    }
    
    @Override
    public void onStart(){
    	super.onStart();
		setContentView(R.layout.selector);
        setTitle(R.string.app_name);
        invalidateOptionsMenu();
        text = (TextView)findViewById(R.id.textView1);
        text.setText(initialPath);
        // load image
        try {
            // get input stream
        	String path =  MainConf.getPath(initialPath)+"/pict1.jpg";
            InputStream ims = getApplicationContext().getResources().getAssets().open(path);
            // load image as Drawable
            Drawable d = Drawable.createFromStream(ims, null);
            // set image to ImageView
            ImageView mImage = (ImageView)findViewById(R.id.picture_view);
            mImage.setImageDrawable(d);
        }
        catch(IOException ex) {
            Log.e(MainConf.TAG, ex.getMessage());
        }
        Log.d(MainConf.TAG, "onStart");
    }
 	 
    public void readBtnClick(View view){
		Intent intent = new Intent(this, ReadActivity.class);
		intent.putExtra(MainConf.INTENT_EXTRA_FULLPATH, initialPath);
        startActivity(intent);
	}
	 
	public void hearBtnClick(View view){
		Intent intent = new Intent(this, HearActivity.class);
		intent.putExtra(MainConf.INTENT_EXTRA_FULLPATH, initialPath);
        startActivity(intent);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getSupportMenuInflater().inflate(R.menu.main, menu);
	    return true;
	}
	 
	@Override
	public boolean onOptionsItemSelected(MenuItem item){
		MainConf.onOptionsItemSelected(this, item);
		return true;
	}
}


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

<TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/qr_text" />

<ImageView
    android:id="@+id/picture_view"
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="9"
    android:baselineAlignBottom="false"
    android:cropToPadding="true"
    android:scaleType="fitCenter"
    android:scrollbarAlwaysDrawVerticalTrack="false"
    android:src="@drawable/ic_launcher" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="9"
    android:orientation="horizontal" >

	<Button
	    android:id="@+id/readBtn"
	    android:layout_width="0dip"
	    android:layout_height="match_parent"
	    android:layout_weight="1"
	    android:background="@drawable/read_btn_selector"
	    android:onClick="readBtnClick"
	    android:text="@string/read_btn"
	    android:textColor="#ffffff" />
	
	<Button
	    android:id="@+id/hearingBtn"
	    android:layout_width="0dip"
		android:layout_height="match_parent"
		android:layout_weight="1"
	    android:background="@drawable/hear_btn_selector"
	    android:onClick="hearBtnClick"
	    android:text="@string/hear_btn"
	    android:textColor="#ffffff" />


</LinearLayout>

</LinearLayout>
  • Вопрос задан
  • 7292 просмотра
Решения вопроса 1
JaLoveAst1k
@JaLoveAst1k
Вместо ImageView Вам необходимо использовать какой-либо другой компонент, я недавно реализовывал это с помощью двух разных:
HorizontalListView - обычный список прокрутки, только горизонтальный. Для него надо создать адаптер, унаследовав например BaseAdapter и переопределив его методы.
ViewPager - а вот он отображает в каждый момент времени только 1 объект, т.е. если Вы остановите свайп на середине, он сам докрутит до ближайшего элемента, скорее всего Вам нужен именно он. По ссылке есть пример использования, но он для фрагментов. Вам же проще будет сделать адаптер на основе PagerAdapter'a, он мало чем отличается от того же адаптера для листа.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
eremeevdev
@eremeevdev
Если я правильно понял, то вам нужен ViewPager. Посмотрите как это сделано здесь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы