Быстрые настройки Android, такие как реализация с нижним листом

Мне нужно реализовать пользовательский вид так же, как быстрые настройки, доступные на панели уведомлений с моими элементами. Я сделал часть исследований и разработок, которыми я поделюсь здесь. Поскольку эта вещь должна быть размещена в нижней части экрана, я интегрировал вид нижнего листа. Перед этим я добавлю скриншот вида, для которого мне нужно создать аналогичный пользовательский вид.

Просмотр, когда элементы свернуты

Просмотр, пока элементы развернуты

Теперь это должно быть интегрировано с нижним листом, поэтому добавление части НИОКР сделано ниже с видом нижнего листа:

MainActivity.java

public void initViews() {
        View bottomSheet = findViewById(R.id.bottomSheet);
        BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
        mBottomSheetBehavior.setPeekHeight(320);

        RecyclerView recyclerView = bottomSheet.findViewById(R.id.bottomSheetRecyclerView);
        recyclerView.setLayoutManager(new GridLayoutManager(mContext, 4));
        BottomSheetItemsAdapter bottomSheetItemsAdapter = new BottomSheetItemsAdapter(mContext, getBottomSheetItems());
        recyclerView.setAdapter(bottomSheetItemsAdapter);
    }

    private ArrayList<String> getBottomSheetItems() {
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("A");
        arrayList.add("B");
        arrayList.add("C");
        arrayList.add("D");
        arrayList.add("E");
        arrayList.add("F");
        arrayList.add("G");
        arrayList.add("H");
        arrayList.add("I");
        return arrayList;
    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">

        </LinearLayout>
    </ScrollView>

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/bottomSheet"
        android:layout_width="match_parent"
        android:layout_height="320dp"
        android:clipToPadding="true"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

        <include layout="@layout/layout_bottom_sheet" />

    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

layout_bottom_sheet.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="5dp"
        android:src="@drawable/ic_down_arrow"
        tools:ignore="ContentDescription" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/bottomSheetRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp" />
</LinearLayout>

BottomSheetItemsAdapter.java

public class BottomSheetItemsAdapter extends RecyclerView.Adapter<BottomSheetItemsAdapter.ViewHolder> {
    private Context mContext;
    private ArrayList<String> bottomSheetItemsList;

    public BottomSheetItemsAdapter(Context mContext, ArrayList<String> bottomSheetItemsList) {
        this.mContext = mContext;
        this.bottomSheetItemsList = bottomSheetItemsList;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View convertView = inflater != null ? inflater.inflate(R.layout.list_items_bottom_sheet, parent, false) : null;
        return new ViewHolder(convertView);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.txtTitle.setText(bottomSheetItemsList.get(position));
    }

    @Override
    public int getItemCount() {
        return bottomSheetItemsList.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private TextView txtTitle;

        ViewHolder(View itemView) {
            super(itemView);

            txtTitle = itemView.findViewById(R.id.txtTitle);
        }

        @Override
        public void onClick(View v) {

        }
    }
}

Погуглив на разных сайтах, я не нашел никакой помощи в том, как реализовать пользовательские или наши собственные быстрые настройки, такие как представления. Я достиг того, что требуется, до определенного уровня, но мне нужна помощь, чтобы достичь 100%. Мне нужно реализовать такое представление, которое показывает некоторые элементы по умолчанию, а остальные элементы расширяются, что я мог бы связать с доступной опцией Быстрые настройки.

Любая помощь будет ценной.

Заранее спасибо.


person Akash    schedule 12.07.2018    source источник
comment
проверили ли вы этот github.com/StackTipsLab/AndroidN-Quick-Settings-Tile- Пример   -  person Kirit Vaghela    schedule 12.07.2018
comment
@KiritVaghela Я думаю, что OP хочет воссоздать представление быстрых настроек и сделать так, чтобы это представление появлялось снизу со своими собственными пользовательскими элементами.   -  person denvercoder9    schedule 12.07.2018
comment
@ rafid059 да, я хочу создать такой вид, который должен исходить снизу   -  person Akash    schedule 12.07.2018
comment
Взгляните на это: stackoverflow.com/questions/34095471/ Кроме того, вы можете углубиться в Android src   -  person denvercoder9    schedule 12.07.2018
comment
Вы когда-нибудь замечали, что каждый производитель смартфонов имеет немного другую тему графического интерфейса. Например Самсунг и Мейзу? Насколько я знаком с архитектурой AOSP, части графического интерфейса системных элементов, таких как QuickSettings, являются частью программного обеспечения производителей оборудования. Что-то написано на C++, что-то на обычном JAVA; Таким образом, чтобы расширить или заменить графический интерфейс на этом уровне, вы должны расширить исходники AOSP и собрать проект с помощью инструментов NDK. Очевидно, отправной точкой является документация ОС: source.android.com/setup/build/requirements Обратите внимание, исходники ОС Android составляют около 32 ГБ.   -  person Sergio Kosik    schedule 24.03.2019