Latest web development tutorials

Android фрагментации одного кадра

Покадровая мусор: фрагменты одного кадра предназначен для небольших экранов устройств, таких как портативные устройства (мобильные телефоны), Android поддержки 3.0 или более поздней версии.


примеров

Этот пример объясняет, как создавать свои собственные произведения. Здесь мы создаем два фрагмента, один из которых используется в устройстве является кросс-экран, когда устройство используется в другой вертикальной времени экрана. Давайте проследим шаги начинаются.

шаг описание
1 Использование Android Studio IDE для создания приложения для Android, под названием Single Фрагменты, имя пакета cn.uprogrammer.singlefragments.
2 Изменение основного активного файла, как показано ниже MainActivity.java. Здесь мы собираемся проверить ориентацию устройства, и на основе этого, чтобы переключаться между различными частями.
3 Создание PortraitFragment.java и LandscapeFragment.java два файла в пакете cn.uprogrammer.singlefragments и связанного с ней метода.
4 Создание файла макета RES / макет / landscape_fragment.xml и RES / макет / portrait_fragment.xml, чтобы определить расположение двух фрагментов.
5 Изменение RES / макет / activity_main.xml содержать два фрагмента.
6 Определить постоянную потребность в Рез / значений / strings.xml в.
7 Запуск Android эмулятор для запуска приложения и проверить результаты изменений, внесенных в приложение.

Ниже перечислены основные содержание активного файла SRC / cn.uprogrammer.singlefragments / MainActivity.java из:

package cn.uprogrammer.singlefragment;

import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.res.Configuration;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Configuration config = getResources().getConfiguration();

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction =
                fragmentManager.beginTransaction();

        /**
         * 检测设备方向,并做相应地操作。
         */
        if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            /**
             * 设备的横屏模式。
             */
            LandscapeFragment ls_fragment = new LandscapeFragment();
            fragmentTransaction.replace(android.R.id.content, ls_fragment);
        }else{
            /**
             * 设备的竖屏模式。
             */
            PortraitFragment pm_fragment = new PortraitFragment();
            fragmentTransaction.replace(android.R.id.content, pm_fragment);
        }
        fragmentTransaction.commit();
    }
}

Создайте два фрагментированных файлов LandscapeFragment.java и PortraitFragment.java в пакете cn.uprogrammer.singlefragments.

Ниже приводится содержимое файла LandscapeFragment.java:

package cn.uprogrammer.singlefragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class LandscapeFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        /**
         * Inflate the layout for this fragment
         */
        return inflater.inflate(
                R.layout.landscape_fragment, container, false);
    }

}

Ниже приводится содержимое файла PortraitFragment.java:

package cn.uprogrammer.singlefragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class PortraitFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        /**
         * Inflate the layout for this fragment
         */
        return inflater.inflate(
                R.layout.portrait_fragment, container, false);
    }
}

Создать два файла макета landscape_fragment.xml и portrait_fragment.xml в Рез каталоге / каталога раскладки.

Ниже приводится содержимое файла landscape_fragment.xml:

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

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/landscape_message"
        android:textColor="#000000"
        android:textSize="28sp" />

    <!-- More GUI components go here  -->

</LinearLayout>

Ниже приводится содержимое файла portrait_fragment.xml:

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

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/portrait_message"
        android:textColor="#000000"
        android:textSize="28sp" />

    <!-- More GUI components go here  -->

</LinearLayout>

Ниже приводится содержание Рез / / файла activity_main.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="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">

    <fragment
        android:id="@+id/landscape_fragment"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent" />

    <fragment
        android:id="@+id/portrait_fragment"
        android:layout_weight="2"
        android:layout_width="0dp"
        android:layout_height="match_parent" />

</LinearLayout>

Обеспечить RES / значения / файл strings.xml содержит следующие элементы:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Single Fragment</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="landscape_message">这是横屏模式碎片</string>
    <string name="portrait_message">这是竖屏模式碎片</string>
</resources>

Давайте просто запустить модифицированные приложения Single фрагментов. Я предполагаю, что вы создали AVD во время установки среды. Откройте свой проект в активном файле, нажмите на панели инструментов изображение Иконка для запуска приложения в Android Studio. Android-студия установить приложение на AVD и запускает его. Если все пойдет хорошо, он будет отображаться в окне эмулятора выглядит следующим образом:

изображение

В соответствии со следующими изменить направление режима экрана эмулятора:

  • Fn + Ctrl + F11 изменение макинтош в пейзаж, как портрет, и наоборот
  • Ctrl + F11 на окнах
  • Ctrl + F11 на Linux

При изменении режима, вы увидите ландшафтный режим, подходящий для реализации страницы:

изображение

Таким образом, вы можете в том же событии, используя неиспользованные части для достижения различных интерфейсов. Вы можете создать интерфейс в соответствии с вашими потребностями, используя различные типы компонентов интерфейса.