Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Программное создание меню



Кроме определения элементов меню в xml, можно также создать меню программным способом. Для добавления новых пунктов меню используется метод add.

Итак, изменим код MainActivity:

package com.example.eugene.menuapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) {   super.onCreateOptionsMenu(menu);    menu.add(0   // Группа          , 1   // id          , 0   //порядок          , " Создать" ); // заголовок    menu.add(0, 2, 1, " Открыть" );    menu.add(0, 3, 2, " Сохранить" );    return true; } @Override public boolean onOptionsItemSelected(MenuItem item) {   int id = item.getItemId();    TextView headerView = (TextView) findViewById(R.id.header);    switch(id){       case 1:            headerView.setText(" Создать документ" );            return true;        case 2:            headerView.setText(" Открыть документ" );            return true;        case 3:            headerView.setText(" Сохранить документ" );            return true;    }   // можно было и так сделать   //String title = item.getTitle().toString();    // headerView.setText(title);    return super.onOptionsItemSelected(item);   }}

Метод add добавляет пункт в меню, принимая следующие параметры: номер группы, id, порядок элемента в меню и заголовок элемента.


Работа с мультимедиа

Работа с видео

Для работы с видеоматериалами в стандартном наборе виджетов Android определен класс VideoView, который позволяет воспроизводить видео.

Какие форматы видео можно использовать? Android поддерживает все те же форматы видео, что и HTML 5, в частности, формат MPEG-4 H.264 (еще известный как WebM), который является оптимальным для Android. Но также можно использовать распространенные форматы MPEG4 H.264 AVC (.mp4) и MPEG4 SP (.3gp)

VideoView может работать как с роликами, размещенными на мобильном устройстве, так и с видеоматериалами из сети. В данном случае используем видеоролик, размещенный локально. Для этого добавим в проект какой-нибудь видеоролик. Обычно видеоматериалы помещают в проекте в папку res/raw. По умолчанию проект не содержит подобной папки, поэтому добавим в каталог res подпапку raw. Для этого нажмем на папку res правой кнопкой мыши и в появившемся меню выберем New -> Directory:

В открывшемся после этого окне введем raw в качестве названия для папки:

После добавления папки raw скопируем в нее какой-нибудь видеофайл:

Теперь определим функционал для его воспроизведения. Для этого в файле activity_main.xml укажем следующий код:

<? xml version=" 1.0" encoding=" utf-8"? > < LinearLayout 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" android: orientation=" vertical" > < LinearLayout   android: layout_width=" match_parent"    android: layout_height=" wrap_content" >    < Button       android: layout_width=" wrap_content"        android: layout_height=" wrap_content"        android: text=" Play"        android: onClick=" play" />    < Button       android: layout_width=" wrap_content"        android: layout_height=" wrap_content"        android: text=" Pause"        android: onClick=" pause" />    < Button       android: layout_width=" wrap_content"        android: layout_height=" wrap_content"        android: text=" Stop"        android: onClick=" stop" /> < /LinearLayout> < VideoView android: id=" @+id/videoPlayer"    android: layout_gravity=" center"    android: layout_height=" match_parent"    android: layout_width=" match_parent" /> < /LinearLayout>

Для управления воспроизведением видео здесь определены три кнопки: для запуска видео, для паузы и для его остановки.

И также изменим код MainActivity:

package com.example.eugene.mediaapp; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.VideoView; public class MainActivity extends AppCompatActivity { VideoView videoPlayer; @Override protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    videoPlayer = (VideoView)findViewById(R.id.videoPlayer);    Uri myVideoUri= Uri.parse( " android.resource: //" + getPackageName() + " /" + R.raw.gu);    videoPlayer.setVideoURI(myVideoUri); } public void play(View view){   videoPlayer.start(); } public void pause(View view){   videoPlayer.pause(); } public void stop(View view){   videoPlayer.stopPlayback();    videoPlayer.resume(); }}

Во-первых, чтобы управлять потоком воспроизведения, нам надо получить объект VideoView: videoPlayer = (VideoView)findViewById(R.id.videoPlayer);

Чтобы указать источник воспроизведения, необходим объект Uri. В данном случае с помощью выражения Uri myVideoUri= Uri.parse(" android.resource: //" + getPackageName() + " /" + R.raw.gu); получаем адрес видеоролика внутри пакета приложения.

Строка URI имеет ряд частей: сначала идет Uri-схема (http: // или как здесь android.resource: //), затем название пакета, получаемое через метод getPackageName(), и далее непосредственно название ресурса видео из папки res/raw, которое совпадает с названием файла.

Затем этот Uri устанавливается у videoPlayerа: videoPlayer.setVideoURI(myVideoUri);

Чтобы управлять видеопотоком, обработчики нажатия кнопко вызывают соответствующее действие:

public void play(View view){   videoPlayer.start(); } public void pause(View view){   videoPlayer.pause(); } public void stop(View view){   videoPlayer.stopPlayback();    videoPlayer.resume(); }

Метод videoPlayer.start() начинает или продолжает воспроизведение.

Метод videoPlayer.pause() приостанавливает видео.

Метод videoPlayer.stopPlayback() полностью останавливает видео.

Метод videoPlayer.resume() позволяет снова начать воспроизведение видео с начала после его полной остановки.

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

MediaController

С помощью класса MediaController мы можем добавить к VideoView дополнительно элементы управления. Для этого изменим код MainActivity:

package com.example.eugene.mediaapp; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.MediaController; import android.widget.VideoView; public class MainActivity extends AppCompatActivity { VideoView videoPlayer; @Override protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    videoPlayer = (VideoView)findViewById(R.id.videoPlayer);    Uri myVideoUri= Uri.parse( " android.resource: //" + getPackageName() + " /" + R.raw.gu);    videoPlayer.setVideoURI(myVideoUri);    MediaController mediaController = new MediaController(this);    videoPlayer.setMediaController(mediaController);    mediaController.setMediaPlayer(videoPlayer); } public void play(View view){   videoPlayer.start();  } public void pause(View view){   videoPlayer.pause(); } public void stop(View view){   videoPlayer.stopPlayback();    videoPlayer.resume(); }}

И если мы запустим приложения, то при касании по VideoView внизу появятся инструменты для управления видео. В прицнипе теперь и кнопки, которые мы создали ранее, не нужны:


Поделиться:



Последнее изменение этой страницы: 2019-05-04; Просмотров: 220; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь