Идея такая. Пользователь сдвигает активити пальцем вниз, после чего, становится виден скрытый за пределами экрана элемент и следует обработка события. Полагаю, будет правильным думать в сторону увеличения высоты активити больше 160dp и установки верхней точки отображения не с 0dp, а с той позиции, которая нам нужна.
На рисунке ниже всё схематично нарисовано. Тёмно-серым обозначена видимая часть экрана, активити обозначена малиновым. Изначально мы видим только часть активити и можем её двигать пальцем.
Как воплотить эту идею в жизнь?
UPD. Решил попробовать решить задачу через ScrollView. Взял пример из интернета. В примере существуют 3 кнопки, нажимаешь последнюю — контент съезжает на 200 пикселей.
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
/**
* Created by promoscow on 12.05.17.
*/
public class ScrollViewDemoActivity extends Activity {
Button buttonScrollUp, buttonScrollDown, buttonScrollToTop;
ScrollView myScroll;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sc2);
buttonScrollUp = (Button) findViewById(R.id.scrollup);
buttonScrollDown = (Button) findViewById(R.id.scrolldown);
buttonScrollToTop = (Button) findViewById(R.id.scrolltotop);
myScroll = (ScrollView) findViewById(R.id.myview);
myScroll.scrollTo(0, 200);
buttonScrollUp.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myScroll.scrollBy(0, 20);
}
});
buttonScrollDown.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myScroll.scrollBy(0, 20);
}
});
buttonScrollToTop.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myScroll.scrollTo(0, 200);
}
});
}
}
Строчка myScroll.scrollTo(0, 200); смещает контент вниз на 200. Я добавляю её сразу после инициализации:
myScroll = (ScrollView) findViewById(R.id.myview);
myScroll.scrollTo(0, 200);
Не работает!
UPD. Сработало с оборачиванием в Runnable:
myScroll.post(new Runnable(){
public void run(){
myScroll.scrollBy(0, 200);
}
});
Ответ
Поместить весь контент в ScrollView, а затем при создании активити сдвинуть позицию скролла
ScrollView sv = (ScrollView)findViewById(R.id.scroll);
sv.scrollTo(..., ...);
Комментариев нет:
Отправить комментарий