Registerkarten können mit ViewPager einfach implementiert werden, und Übergänge zwischen Registerkarten können durch Wischen oder Tippen auf Registerkarten erfolgen.
Wenn Sie es etwas cool aussehen lassen möchten, erhöht sich der Schwierigkeitsgrad. Selbst wenn ich es gegoogelt habe, war es gut, weil es gut war.
Vielleicht kann das Ziel durch Kopieren und Einfügen erreicht werden.
** ★ Ziel: Bilder und Text auf der Registerkarte ViewPager anzeigen **
layout_main_tab.xml
<?xml version="1.0" encoding="utf-8"?>
<!--Fragmentbasis-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--Tab-Teil-->
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.v4.view.ViewPager>
</RelativeLayout>
layout_custom_tab.xml
<?xml version="1.0" encoding="utf-8"?>
<!--Benutzerdefinierte Registerkarte-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/customTab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<!--Tab-Symbol-->
<ImageView
android:id="@+id/tabIcon"
android:layout_marginTop="8dp"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerHorizontal="true" />
<!--Tabulatortext-->
<TextView
android:id="@+id/tabText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:paddingBottom="6dp"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
fragment_web_browser.xml
<?xml version="1.0" encoding="utf-8"?>
<!--Webbrowser-Fragment-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragmentWebBrowser"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.WebBrowserFragment">
<!--Webbrowser-->
<WebView
android:id="@+id/webBrowser"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
fragment_download_list.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
MainActiity.java
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.content.res.ResourcesCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.support.design.widget.TabLayout;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import jp.jackall.androiddownloader.R;
import jp.jackall.androiddownloader.adapter.LayoutMainTabPagerAdapter;
import jp.jackall.androiddownloader.util.Constants;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
/**
*Einstellungen des Hauptbildschirms
*/
private void initView() {
//ViewPager-Einstellungen
LayoutMainTabPagerAdapter pagerAdapter = new LayoutMainTabPagerAdapter(getSupportFragmentManager());
ViewPager viewPager = (ViewPager)findViewById(R.id.pager);
viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(Constants.TAB_POSITION.WEB.ordinal());
//Registerkarteneinstellungen
tabSetup(viewPager);
}
/**
*Einstellungen für jede Registerkarte
* @param viewPager
*/
private void tabSetup(ViewPager viewPager) {
//LayoutInflater abrufen Zum Abrufen der Layoutdatei als Ansicht
LayoutInflater inflater = LayoutInflater.from(this);
//Holen Sie sich die Basis der Registerkarte
TabLayout tabLayout = (TabLayout)findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
//Einstellungen für jede Registerkarte
//Registerkarte Browser
View tabWeb = inflater.inflate(R.layout.layout_custom_tab, null);
((ImageView)tabWeb.findViewById(R.id.tabIcon)).setImageDrawable(getDrawableFromResource(R.drawable.browser_tab_icon));
((TextView)tabWeb.findViewById(R.id.tabText)).setText(MainActivity.getStringFromResource(R.string.tab_web));
tabLayout.getTabAt(Constants.TAB_POSITION.WEB.ordinal()).setCustomView(tabWeb);
//Registerkarte "Liste herunterladen"
View tabDownloadList = inflater.inflate(R.layout.layout_custom_tab, null);
((ImageView)tabDownloadList.findViewById(R.id.tabIcon)).setImageDrawable(getDrawableFromResource(R.drawable.download_list_tab_icon));
((TextView)tabDownloadList.findViewById(R.id.tabText)).setText(MainActivity.getStringFromResource(R.string.tab_download));
tabLayout.getTabAt(Constants.TAB_POSITION.DOWNLOAD_LIST.ordinal()).setCustomView(tabDownloadList);
}
/**
* String.Zeichenfolge aus XML abrufen
* @return
*/
private String getStringFromResource(int id) {
return context.getResources().getString(id);
}
/**
*Zeichnungsfähig werden
* @param id
* @return
*/
private Drawable getDrawableFromResource(int id) {
return ResourcesCompat.getDrawable(context.getResources(), id, null);
}
}
LayoutMainTabPagerAdapter.java
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import jp.jackall.androiddownloader.fragment.DownloadListFragment;
import jp.jackall.androiddownloader.fragment.WebBrowserFragment;
import jp.jackall.androiddownloader.util.Constants;
public class LayoutMainTabPagerAdapter extends FragmentPagerAdapter {
//Gesamtzahl der Registerkarten
private static final int TAB_NUM = 2;
public LayoutMainTabPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch(Constants.TAB_POSITION.values()[position]) {
case WEB:
return WebBrowserFragment.newInstance();
case DOWNLOAD_LIST:
return DownloadListFragment.newInstance();
default:
return null;
}
}
@Override
public int getCount() {
return TAB_NUM;
}
}
WebBrowserFragment.java
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import jp.jackall.androiddownloader.R;
import jp.jackall.androiddownloader.util.Constants;
/**
*Browser-Registerkartenfragment
*/
public class WebBrowserFragment extends Fragment {
private Context context = null;
private View rootView = null;
/**
*Instanzgenerierung
* @return
*/
public static WebBrowserFragment newInstance() {
WebBrowserFragment fragment = new WebBrowserFragment();
return fragment;
}
/**
*Fragmentinitialisierung
* @param savedInstanceState
*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
/**
*Fragmentinitialisierung
* @param inflater
* @param container
* @param savedInstanceState
* @return
*/
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_web_browser, container, false);
WebView webView = (WebView)rootView.findViewById(R.id.webBrowser);
webView.setWebViewClient(new WebViewClient() {
//Führen Sie einen In-Page-Übergang in WebView durch
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//Laden Sie den Link in dieselbe WebView
return false;
}
});
//Standardseite laden
webView.loadUrl(Constants.DEFAULT_WEB_URL);
//Einstellungen für die Wiedergabe von Twitter und Videos in WebView
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
return rootView;
}
/**
*Wird beim Registrieren eines Fragments aufgerufen
* @param context
*/
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
/**
*Wird aufgerufen, wenn das Fragment die Aktivität verlässt
*/
@Override
public void onDetach() {
super.onDetach();
}
}
DownloadListFragment.java
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import jp.jackall.androiddownloader.R;
public class DownloadListFragment extends Fragment {
private Context context = null;
private View rootView = null;
/**
*Instanzgenerierung
* @return
*/
public static DownloadListFragment newInstance() {
DownloadListFragment fragment = new DownloadListFragment();
return fragment;
}
/**
*Fragmentinitialisierung
* @param savedInstanceState
*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
/**
*Fragmentinitialisierung
* @param inflater
* @param container
* @param savedInstanceState
* @return
*/
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_download_list, container, false);
return rootView;
}
/**
*Wird beim Registrieren eines Fragments aufgerufen
* @param context
*/
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
/**
*Wird beim Verlassen der Fragmentaktivität aufgerufen
*/
public void onDetach() {
super.onDetach();
}
}
Constants.java
public class Constants {
private Constants() {}
/**
*Tabulatorposition
*/
public enum TAB_POSITION {
WEB, //Registerkarte "Web"
DOWNLOAD_LIST //Registerkarte "Liste herunterladen"
}
public static final String DEFAULT_WEB_URL = "https://www.google.co.jp/";
}
Sie können Abzeichen einfach auf Registerkarten anzeigen, indem Sie mit layout_custom_tab.xml spielen.
Recommended Posts