Как проверить, отображается ли страница в окне просмотра в java

Я искал в Интернете час и создал собственные представления для viewPager. Все решения, которые я видел, были для фрагментов. Мой вопрос в том, как с помощью оператора if проверить, видна ли моя страница. Я хочу сделать это по одной причине. У меня есть определенные виды, которые лежат поверх экрана камеры, и я хочу сохранить каждое изображение в зависимости от вида. Например: если используется объект одежды «TOPS» и «tops_view», я хочу сохранить его в папке «tops» в android. Я уже знаю, как сохранять в разные папки, поэтому хочу сделать операторы if в моем файле cameraAPI. Оператор if - это псевдокод того, чего я хочу достичь:

if (ClothesPagerView == TOPS)

final File file = new File(Environment.getExternalStorageDirectory() + "/OutfitMatcher/tops/img" + System.currentTimeMillis () +".jpg");

else if (ClothesPagerView == BOTTOMS)

final File file = new File(Environment.getExternalStorageDirectory() + "/OutfitMatcher/bottoms/img" + System.currentTimeMillis () +".jpg");

CustomPagerAdapater.java

public class CustomPagerAdapter1 extends PagerAdapter{
    private Context mContext;

    public CustomPagerAdapter1(Context context) {
        mContext = context;
    }

    @Override
    public Object instantiateItem(ViewGroup collection, int position) {
        ClothesObject clothesObject = ClothesObject.values()[position];
        LayoutInflater inflater = LayoutInflater.from(mContext);
        ViewGroup layout = (ViewGroup) inflater.inflate(clothesObject.getLayoutResId(), collection, false);
        collection.addView(layout);
        return layout;
    }

    @Override
    public void destroyItem(ViewGroup collection, int position, Object view) {
        collection.removeView((View) view);
    }

    @Override
    public int getCount() {
        return ClothesObject.values().length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        ClothesObject customPagerEnum = ClothesObject.values()[position];
        return mContext.getString(customPagerEnum.getTitleResId());
    }
}

ClothesObject.jaca (который я использую с адаптером)

public enum ClothesObject {
    TOPS(R.string.tops_camera, R.layout.tops_view),
    BOTTOMS(R.string.bottoms_camera, R.layout.bottoms_view),
    ACCESSORIES(R.string.accessories_camera, R.layout.accessories_view),
    SHOES(R.string.shoes_camera, R.layout.shoes_view),
    OUTERWEAR(R.string.outerwear_camera, R.layout.outerwear_view),
    DRESSES(R.string.dresses_camera, R.layout.dresses_view);

    private int mTitleResId;
    private int mLayoutResId;

    ClothesObject(int titleResId, int layoutResId) {
        mTitleResId = titleResId;
        mLayoutResId = layoutResId;
    }

    public int getTitleResId() {
        return mTitleResId;
    }

    public int getLayoutResId() {
        return mLayoutResId;
    }
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 009
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для этого вам нужно использовать фрагмент с Viewpager. тогда вы можете использовать getUserVisibleHint() в своем фрагменте для проверки, активна ли страница или нет

т.е.

    if (getUserVisibleHint()){
    //Your fragment is visible
    }else{
      // Not visible
}

getUserVisibleHint имеет красный цвет с надписью «невозможно разрешить метод»

gad74 22.03.2018 04:57

Сначала вам нужно изменить адаптер пейджера на FragmentPagerAdapter, а затем использовать фрагменты для создания представления. затем используйте getUserVisibleHint () для проверки того, что фрагмент виден или нет

Vinayak B 22.03.2018 05:01

Стирает ли это мои "просмотры" или мне придется их воссоздавать?

gad74 22.03.2018 05:01

Нет, вы можете использовать ту же логику и во фрагменте

Vinayak B 22.03.2018 05:02

Другие вопросы по теме