Электронная библиотека » Тимур Машнин » » онлайн чтение - страница 8


  • Текст добавлен: 16 октября 2020, 07:59


Автор книги: Тимур Машнин


Жанр: Компьютеры: прочее, Компьютеры


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 8 (всего у книги 20 страниц)

Шрифт:
- 100% +
ViewPager

Для создания галереи изображений с помощью ViewPager-компонента, в главном Activity-компоненте приложения также определим показ начальной заставки и панели с кнопками переключения между разделами контента:

import java.io.IOException;

import java.io.InputStream;

import java. util. Locale;

import android.app.ActionBar;

import android.app.FragmentTransaction;

import android.content.Intent;

import android.graphics. drawable. Drawable;

import android. os. Bundle;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentStatePagerAdapter;

import android.support.v4.view.ViewPager;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.view.View. OnClickListener;

import android. widget. Button;

import android.widget.ImageView;


public class MainActivity extends FragmentActivity implements

ActionBar. TabListener {

SectionsPagerAdapter mSectionsPagerAdapter;

ViewPager mViewPager;

@Override

protected void onCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView(R.layout.activity_main);

final ActionBar actionBar = getActionBar ();

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

mSectionsPagerAdapter = new SectionsPagerAdapter (

getSupportFragmentManager ());

mViewPager = (ViewPager) findViewById(R.id.pager);

mViewPager.setAdapter (mSectionsPagerAdapter);

mViewPager.setOnPageChangeListener (new ViewPager.SimpleOnPageChangeListener () {

@Override

public void onPageSelected (int position) {

actionBar.setSelectedNavigationItem (position);

}

});

for (int i = 0; i <mSectionsPagerAdapter.getCount (); i++) {

actionBar.addTab(actionBar.newTab ()

.setText(mSectionsPagerAdapter.getPageTitle (i))

.setTabListener (this));

}}

@Override

public boolean onCreateOptionsMenu (Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected (MenuItem item) {

switch (item.getItemId ()) {

case R.id.action_settings:

final Intent intent = new Intent (this, MainActivity.class);

startActivity (intent);

return true;

default:

return super. onOptionsItemSelected (item);

}}

@Override

public void onTabSelected (ActionBar. Tab tab,

FragmentTransaction fragmentTransaction) {

mViewPager.setCurrentItem(tab.getPosition ());

}

@Override

public void onTabUnselected (ActionBar. Tab tab,

FragmentTransaction fragmentTransaction) {

}

@Override

public void onTabReselected (ActionBar. Tab tab,

FragmentTransaction fragmentTransaction) {

}

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

public SectionsPagerAdapter (FragmentManager fm) {

super (fm);

}

@Override

public Fragment getItem (int position) {

Fragment fragment = new DummySectionFragment ();

Bundle args = new Bundle ();

args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position +1);

fragment.setArguments (args);

return fragment;

}

@Override

public int getCount () {

return 2;

}

@Override

public CharSequence getPageTitle (int position) {

Locale l = Locale.getDefault ();

switch (position) {

case 0:

return getString(R.string.title_main_section1).toUpperCase (l);

case 1:

return getString(R.string.title_main_section2).toUpperCase (l);

}

return null;

}}

public static class DummySectionFragment extends Fragment {

public static final String ARG_SECTION_NUMBER = «section_number»;

public DummySectionFragment () {

}

@Override

public View onCreateView (LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

int pos=getArguments().getInt (ARG_SECTION_NUMBER);

View rootView=null;

if (pos==1) {

rootView = inflater.inflate(R.layout.activity_main_launch, container, false);

ImageView image = (ImageView)rootView.findViewById(R.id.imageViewLaunch);

try

{

InputStream ims = rootView.getContext().getAssets().open("_FRONT.jpg»);

Drawable d = Drawable.createFromStream (ims, null);

image.setImageDrawable (d);

}

catch (IOException ex)

{

ex.printStackTrace ();

}}

if (pos==2) {

rootView = inflater.inflate(R.layout.contents, container, false);

final Intent intent = new Intent (getActivity (), ContentActivity.class);

final Button btn1= (Button)rootView.findViewById(R.id.button1);

btn1.setOnClickListener (new OnClickListener () {

public void onClick (View v) {

String nameTitle=«title»;

String valueTitle=btn1.getText().toString ();

intent. putExtra (nameTitle, valueTitle);

String namePages=«pages»;

int valuePages=8;

intent. putExtra (namePages, valuePages);

startActivity (intent);

}

});


final Button btnn= (Button)rootView.findViewById(R.id.buttonn);

btnn.setOnClickListener (new OnClickListener () {

public void onClick (View v) {

String nameTitle=«title»;

String valueTitle=btnn.getText().toString ();

intent. putExtra (nameTitle, valueTitle);

String namePages=«pages»;

int valuePages=xxx;

intent. putExtra (namePages, valuePages);

startActivity (intent);

}

});


}

return rootView;

}}}

В классе MainActivity в методе onCreate () создается экран, содержимое которого определяется компоновкой activity_main. xml:

http://schemas.android.com/apk/res/android"ewPager xmlns: android="<android.support.v4.view.Vi

xmlns: tools="http://schemas.android.com/tools"

android: id="@+id/pager»

android: layout_width=«match_parent»

android: layout_height=«match_parent»

tools:context=".MainActivity» />

SectionsPagerAdapter-адаптер ViewPager-компонента создает объекты android.support.v4.app.Fragment, метод onCreateView () класса которых получает в качестве параметра номер экрана, на основе которого формирует отображаемый контент.

Если пользователь переключается на первый экран – загружается компоновка activity_main_launch. xml и отображается начальная заставка:

<LinearLayout xmlns: android="http://schemas.android.com/apk/res/android"

android: id="@+id/viewLaunch»

android: orientation=«vertical»

xmlns: tools="http://schemas.android.com/tools"

android: layout_width=«match_parent»

android: layout_height=«match_parent»

android: paddingBottom="@dimen/activity_vertical_margin»

android: paddingLeft="@dimen/activity_horizontal_margin»

android: paddingRight="@dimen/activity_horizontal_margin»

android: paddingTop="@dimen/activity_vertical_margin»

tools:context=".MainActivity»>


<ImageView

android: id="@+id/imageViewLaunch»

android: layout_width=«fill_parent»

android: layout_height=«fill_parent»

android: contentDescription="@string/desc» />

</LinearLayout>

Если же пользователь переключается на второй экран – загружается компоновка contents. xml и отображается панель с кнопками переключения между разделами контента:

<?xml version=«1.0» encoding=«utf-8»? >


<ScrollView xmlns: android="http://schemas.android.com/apk/res/android"

android: layout_width=«match_parent»

android: layout_height=«match_parent»>


<LinearLayout android: layout_width=«fill_parent»

android: baselineAligned=«false»

android: layout_height=«wrap_content»

android: orientation=«horizontal»>


<LinearLayout android: layout_height=«wrap_content»

android: id="@+id/linearLayout1»

android: orientation=«vertical»

android: layout_width=«0dip»

android: layout_weight=». 8»>


<TextView

android: id="@+id/contentsTitle»

android: layout_width=«fill_parent»

android: layout_height=«wrap_content»

android: text="@string/title»

android: textStyle=«bold»

android: textAppearance=»? android: attr/textAppearanceMedium»/>

<Button

android: gravity=«left|center_vertical»

android: id="@+id/button1»

android: layout_width=«fill_parent»

android: layout_height=«wrap_content»

android: text="@string/introduction» />


<Button

android: gravity=«left|center_vertical»

android: id="@+id/buttonn»

android: layout_width=«fill_parent»

android: layout_height=«wrap_content»

android: text="@string/chxxx» />

</LinearLayout>


<LinearLayout android: layout_width=«0dip»

android: layout_height=«wrap_content»

android: orientation=«horizontal»

android: id="@+id/linearLayout_dummy»

android: layout_weight=». 20»>

</LinearLayout>

</LinearLayout>

</ScrollView>

Кнопки панели разделов контента обеспечивают запуск другого Activity-компонента приложения, передавая ему в качестве параметра свой текст и количество страниц раздела, который нужно отображать:

import java.io.IOException;

import java.io.InputStream;

import java. util. Locale;

import android.app.ActionBar;

import android.app.FragmentTransaction;

import android.content.Intent;

import android.graphics. drawable. Drawable;

import android. os. Bundle;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentStatePagerAdapter;

import android.support.v4.view.ViewPager;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;


public class ContentActivity extends FragmentActivity implements

ActionBar. TabListener {

SectionsPagerAdapter mSectionsPagerAdapter;

ViewPager mViewPager;

public static String title;

private int pages;

@Override

protected void onCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView(R.layout.activity_main_content);

title=this.getIntent().getStringExtra («title»);

pages=this.getIntent().getIntExtra («pages», 0);

final ActionBar actionBar = getActionBar ();

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

mSectionsPagerAdapter = new SectionsPagerAdapter (

getSupportFragmentManager ());

mViewPager = (ViewPager) findViewById(R.id.pager);

mViewPager.setAdapter (mSectionsPagerAdapter);

mViewPager.setOnPageChangeListener (new ViewPager.SimpleOnPageChangeListener () {

@Override

public void onPageSelected (int position) {

actionBar.setSelectedNavigationItem (position);

}

});

for (int i = 0; i <mSectionsPagerAdapter.getCount (); i++) {

actionBar.addTab(actionBar.newTab ()

.setText(mSectionsPagerAdapter.getPageTitle (i))

.setTabListener (this));

}}

@Override

public boolean onCreateOptionsMenu (Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected (MenuItem item) {

switch (item.getItemId ()) {

case R.id.action_settings:

final Intent intent = new Intent (this, MainActivity.class);

startActivity (intent);

return true;

default:

return super. onOptionsItemSelected (item);

}}

@Override

public void onTabSelected (ActionBar. Tab tab,

FragmentTransaction fragmentTransaction) {

mViewPager.setCurrentItem(tab.getPosition ());

}

@Override

public void onTabUnselected (ActionBar. Tab tab,

FragmentTransaction fragmentTransaction) {

}

@Override

public void onTabReselected (ActionBar. Tab tab,

FragmentTransaction fragmentTransaction) {

}

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

public SectionsPagerAdapter (FragmentManager fm) {

super (fm);

}

@Override

public Fragment getItem (int position) {

Fragment fragment = new DummySectionFragment ();

Bundle args = new Bundle ();

args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position +1);

fragment.setArguments (args);

return fragment;

}

@Override

public int getCount () {

return pages;

}

@Override

public CharSequence getPageTitle (int position) {

Locale l = Locale.getDefault ();

String str=title+" page: "+position;

return str.toUpperCase (l);

}}

public static class DummySectionFragment extends Fragment {

public static final String ARG_SECTION_NUMBER = «section_number»;

public DummySectionFragment () {

}

@Override

public View onCreateView (LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

int pos=getArguments().getInt (ARG_SECTION_NUMBER);

View rootView = inflater.inflate(R.layout.activity_content, container, false);

ImageView image = (ImageView)rootView.findViewById(R.id.imageViewContent);

try

{

String path=«»;

if (ContentActivity. title. equals («Introduction»)) path=«intro»;


if (ContentActivity. title. equals («Chaptern»)) path=«chn»;

InputStream ims = rootView.getContext().getAssets().open(path+"/"+pos+".jpg»);

Drawable d = Drawable.createFromStream (ims, null);

image.setImageDrawable (d);

}

catch (IOException ex)

{

ex.printStackTrace ();

}

return rootView;

}}}

В классе ContentActivity в методе onCreate () создается экран, содержимое которого определяется компоновкой activity_main_content. xml:

http://schemas.android.com/apk/res/android"ewPager xmlns: android="<android.support.v4.view.Vi

xmlns: tools="http://schemas.android.com/tools"

android: id="@+id/pager»

android: layout_width=«match_parent»

android: layout_height=«match_parent»

tools:context=".ContentActivity» />

SectionsPagerAdapter-адаптер ViewPager-компонента создает объекты android.support.v4.app.Fragment, метод onCreateView () класса которых получает в качестве параметра номер экрана, на основе которого формируется отображаемый контент. При этом содержимое экрана определяется компоновкой activity_content. xml:

<LinearLayout xmlns: android="http://schemas.android.com/apk/res/android"

xmlns: tools="http://schemas.android.com/tools"

android: id="@+id/layoutContent»

android: layout_width=«match_parent»

android: layout_height=«match_parent»

android: orientation=«vertical»

android: paddingBottom="@dimen/activity_vertical_margin»

android: paddingLeft="@dimen/activity_horizontal_margin»

android: paddingRight="@dimen/activity_horizontal_margin»

android: paddingTop="@dimen/activity_vertical_margin»

tools:context=".ContentActivity»>


<ImageView

android: id="@+id/imageViewContent»

android: layout_width=«fill_parent»

android: layout_height=«fill_parent»

android: contentDescription="@string/cont»/>


</LinearLayout>

В методе onCreateView () класса DummySectionFragment динамически изменяется содержимое компонента ImageView на основе названия раздела контента и номера экрана, обеспечивая переключение между изображениями соответствующей папки каталога assets проекта приложения.

ImageView + Zoom + Scroll

Стандартный компонент ImageView платформы Android не позволяет прикосновением к экрану увеличить изображение и после этого прокручивать его.

Для добавления опции увеличения и прокручивания изображения можно воспользоваться сторонними библиотеками, такими как https://github.com/chrisbanes/PhotoView.

Для использования библиотеки PhotoView скачаем проект и с помощью инструмента Maven соберем JAR-файл библиотеки, который поместим в каталог libs проекта приложения.

Теперь в исходном коде приложения ImageView-компонент можно добавить в контейнер uk.co.senab.photoview.PhotoViewAttacher, который будет обеспечивать увеличение и прокрутку изображения:

private PhotoViewAttacher mAttacher;

private ImageView image;


image=(ImageView)findViewById(R.id.imageViewContent);

mAttacher = new PhotoViewAttacher (image);


image.setImageDrawable (d);

mAttacher. update ();

Галерея HTML контента

Простое поэкранное отображение HTML-контента можно организовать с помощью компонента android. webkit. WebView и слушателя setOnTouchListener () контейнера WebView-компонента. Более сложную анимацию добавит компонент android.widget.ViewFlipper, а более удобное переключение между экранами – компонент android.support.v4.view.ViewPager.

Для создания галереи HTML-контента с помощью ViewPager-компонента, в главном Activity-компоненте приложения определим показ начальной заставки и панели с кнопками переключения между разделами контента:

import java.io.IOException;

import java.io.InputStream;

import java. util. Locale;

import android.app.ActionBar;

import android.app.FragmentTransaction;

import android.content.Intent;

import android.graphics. drawable. Drawable;

import android. os. Bundle;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentStatePagerAdapter;

import android.support.v4.view.ViewPager;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.View. OnClickListener;

import android.view.ViewGroup;

import android. widget. Button;

import android.widget.ImageView;


public class MainActivity extends FragmentActivity implements ActionBar. TabListener {

SectionsPagerAdapter mSectionsPagerAdapter;

ViewPager mViewPager;

@Override

protected void onCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView(R.layout.activity_main);

final ActionBar actionBar = getActionBar ();

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

mSectionsPagerAdapter = new SectionsPagerAdapter (getSupportFragmentManager ());

mViewPager = (ViewPager) findViewById(R.id.pager);

mViewPager.setAdapter (mSectionsPagerAdapter);

mViewPager.setOnPageChangeListener (new ViewPager.SimpleOnPageChangeListener () {

@Override

public void onPageSelected (int position) {

actionBar.setSelectedNavigationItem (position);

}

});

for (int i = 0; i <mSectionsPagerAdapter.getCount (); i++) {

actionBar.addTab (

actionBar.newTab ()

.setText(mSectionsPagerAdapter.getPageTitle (i))

.setTabListener (this));

}}

@Override

public boolean onCreateOptionsMenu (Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public void onTabSelected (ActionBar. Tab tab, FragmentTransaction fragmentTransaction) {

mViewPager.setCurrentItem(tab.getPosition ());

}

@Override

public void onTabUnselected (ActionBar. Tab tab, FragmentTransaction fragmentTransaction) {

}

@Override

public void onTabReselected (ActionBar. Tab tab, FragmentTransaction fragmentTransaction) {

}

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

public SectionsPagerAdapter (FragmentManager fm) {

super (fm);

}

@Override

public Fragment getItem (int position) {

Fragment fragment = new DummySectionFragment ();

Bundle args = new Bundle ();

args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position +1);

fragment.setArguments (args);

return fragment;

}

@Override

public int getCount () {

return 2;

}

@Override

public CharSequence getPageTitle (int position) {

Locale l = Locale.getDefault ();

switch (position) {

case 0:

return getString(R.string.title_main_section1).toUpperCase (l);

case 1:

return getString(R.string.title_main_section2).toUpperCase (l);

}

return null;

}}

public static class DummySectionFragment extends Fragment {

public static final String ARG_SECTION_NUMBER = «section_number»;

public DummySectionFragment () {

}

@Override

public View onCreateView (LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

int pos=getArguments().getInt (ARG_SECTION_NUMBER);

View rootView=null;

if (pos==1) {

rootView = inflater.inflate(R.layout.activity_main_launch, container, false);

ImageView image = (ImageView)rootView.findViewById(R.id.imageViewLaunch);

try

{

InputStream ims = rootView.getContext().getAssets().open("_FRONT.jpg»);

Drawable d = Drawable.createFromStream (ims, null);

image.setImageDrawable (d);

}

catch (IOException ex)

{

ex.printStackTrace ();

}}

if (pos==2) {

rootView = inflater.inflate(R.layout.contents, container, false);

final Intent intent = new Intent (getActivity (), ContentActivity.class);

final Button btn1= (Button)rootView.findViewById(R.id.button1);

btn1.setOnClickListener (new OnClickListener () {

public void onClick (View v) {

String name=«position»;

int value=0;

intent. putExtra (name, value);

startActivity (intent);

}

});


final Button btnn= (Button)rootView.findViewById(R.id.buttonn);

btnn.setOnClickListener (new OnClickListener () {

public void onClick (View v) {

String name=«position»;

int value=xxx;

intent. putExtra (name, value);

startActivity (intent);

}

});

}

return rootView;

}}}

В классе MainActivity в методе onCreate () создается экран, содержимое которого определяется компоновкой activity_main. xml:

http://schemas.android.com/apk/res/android"ewPager xmlns: android="<android.support.v4.view.Vi

xmlns: tools="http://schemas.android.com/tools"

android: id="@+id/pager»

android: layout_width=«match_parent»

android: layout_height=«match_parent»

tools:context=".MainActivity» />

SectionsPagerAdapter-адаптер ViewPager-компонента создает объекты android.support.v4.app.Fragment, метод onCreateView () класса которых получает в качестве параметра номер экрана, на основе которого формирует отображаемый контент.

Если пользователь переключается на первый экран – загружается компоновка activity_main_launch. xml и отображается начальная заставка:

<LinearLayout xmlns: android="http://schemas.android.com/apk/res/android"

android: id="@+id/viewLaunch»

android: orientation=«vertical»

xmlns: tools="http://schemas.android.com/tools"

android: layout_width=«match_parent»

android: layout_height=«match_parent»

android: paddingBottom="@dimen/activity_vertical_margin»

android: paddingLeft="@dimen/activity_horizontal_margin»

android: paddingRight="@dimen/activity_horizontal_margin»

android: paddingTop="@dimen/activity_vertical_margin»

tools:context=".MainActivity»>


<ImageView

android: id="@+id/imageViewLaunch»

android: layout_width=«fill_parent»

android: layout_height=«fill_parent»

android: contentDescription="@string/desc» />

</LinearLayout>

Если же пользователь переключается на второй экран – загружается компоновка contents. xml и отображается панель с кнопками переключения между разделами контента:

<?xml version=«1.0» encoding=«utf-8»? >


<ScrollView xmlns: android="http://schemas.android.com/apk/res/android"

android: layout_width=«match_parent»

android: layout_height=«match_parent»>


<LinearLayout android: layout_width=«fill_parent»

android: baselineAligned=«false»

android: layout_height=«wrap_content»

android: orientation=«horizontal»>


<LinearLayout android: layout_height=«wrap_content»

android: id="@+id/linearLayout1»

android: orientation=«vertical»

android: layout_width=«0dip»

android: layout_weight=». 8»>


<TextView

android: id="@+id/contentsTitle»

android: layout_width=«fill_parent»

android: layout_height=«wrap_content»

android: text="@string/title»

android: textStyle=«bold»

android: textAppearance=»? android: attr/textAppearanceMedium»/>

<Button

android: gravity=«left|center_vertical»

android: id="@+id/button1»

android: layout_width=«fill_parent»

android: layout_height=«wrap_content»

android: text="@string/introduction» />


<Button

android: gravity=«left|center_vertical»

android: id="@+id/buttonn»

android: layout_width=«fill_parent»

android: layout_height=«wrap_content»

android: text="@string/chxxx» />

</LinearLayout>


<LinearLayout android: layout_width=«0dip»

android: layout_height=«wrap_content»

android: orientation=«horizontal»

android: id="@+id/linearLayout_dummy»

android: layout_weight=». 20»>

</LinearLayout>

</LinearLayout>

</ScrollView>

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

import java. util. Locale;

import android.app.ActionBar;

import android.app.FragmentTransaction;

import android.content.Intent;

import android. os. Bundle;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentStatePagerAdapter;

import android.support.v4.view.ViewPager;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android. webkit. WebView;


public class ContentActivity extends FragmentActivity implements

ActionBar. TabListener {

SectionsPagerAdapter mSectionsPagerAdapter;

ViewPager mViewPager;

private int position;

@Override

protected void onCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView(R.layout.activity_main_content);

position=this.getIntent().getIntExtra («position», 0);

final ActionBar actionBar = getActionBar ();

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

mSectionsPagerAdapter = new SectionsPagerAdapter (

getSupportFragmentManager ());

mViewPager = (ViewPager) findViewById(R.id.pager);

mViewPager.setAdapter (mSectionsPagerAdapter);

mViewPager.setOnPageChangeListener (new ViewPager.SimpleOnPageChangeListener () {

@Override

public void onPageSelected (int position) {

actionBar.setSelectedNavigationItem (position);

}

});

for (int i = 0; i <mSectionsPagerAdapter.getCount (); i++) {

actionBar.addTab(actionBar.newTab ()

.setText(mSectionsPagerAdapter.getPageTitle (i))

.setTabListener (this));

}

mViewPager.setCurrentItem (position);

}

@Override

public boolean onCreateOptionsMenu (Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected (MenuItem item) {

switch (item.getItemId ()) {

case R.id.action_settings:

final Intent intent = new Intent (this, MainActivity.class);

startActivity (intent);

return true;

default:

return super. onOptionsItemSelected (item);

}}

@Override

public void onTabSelected (ActionBar. Tab tab,

FragmentTransaction fragmentTransaction) {

mViewPager.setCurrentItem(tab.getPosition ());

}

@Override

public void onTabUnselected (ActionBar. Tab tab,

FragmentTransaction fragmentTransaction) {

}

@Override

public void onTabReselected (ActionBar. Tab tab,

FragmentTransaction fragmentTransaction) {

}

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

public SectionsPagerAdapter (FragmentManager fm) {

super (fm);

}

@Override

public Fragment getItem (int position) {

Fragment fragment = new DummySectionFragment ();

Bundle args = new Bundle ();

args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position +1);

fragment.setArguments (args);

return fragment;

}

@Override

public int getCount () {

return xxx;

}

@Override

public CharSequence getPageTitle (int position) {

Locale l = Locale.getDefault ();

switch (position) {

case 0:

return getString(R.string.introduction).toUpperCase (l);


case 17:

return getString(R.string.ch17).toUpperCase (l);

}

return null;

}}

public static class DummySectionFragment extends Fragment {

public static final String ARG_SECTION_NUMBER = «section_number»;

public DummySectionFragment () {

}

@Override

public View onCreateView (LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

int pos=getArguments().getInt (ARG_SECTION_NUMBER) -1;

View rootView = inflater.inflate(R.layout.activity_content, container, false);

WebView myWebView = (WebView) rootView.findViewById(R.id.webview);

myWebView.loadUrl("file:///android_asset/page"+pos+".html»);

return rootView;

}}}

В классе ContentActivity в методе onCreate () создается экран, содержимое которого определяется компоновкой activity_main_content. xml:

http://schemas.android.com/apk/res/android"ewPager xmlns: android="<android.support.v4.view.Vi

xmlns: tools="http://schemas.android.com/tools"

android: id="@+id/pager»

android: layout_width=«match_parent»

android: layout_height=«match_parent»

tools:context=".ContentActivity» />

SectionsPagerAdapter-адаптер ViewPager-компонента создает объекты android.support.v4.app.Fragment, метод onCreateView () класса которых получает в качестве параметра номер экрана, на основе которого формируется отображаемый контент. При этом содержимое экрана определяется компоновкой activity_content. xml:

<?xml version=«1.0» encoding=«utf-8»? >

<WebView xmlns: android="http://schemas.android.com/apk/res/android"

android: id="@+id/webview»

android: layout_width=«fill_parent»

android: layout_height=«fill_parent» />

В методе onCreateView () класса DummySectionFragment динамически изменяется содержимое компонента WebView на основе номера экрана и соответственно номера раздела контента, обеспечивая переключение между HTML-страницами соответствующей папки каталога assets проекта приложения.


Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Следующая
  • 0 Оценок: 0

Правообладателям!

Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.


Популярные книги за неделю


Рекомендации