2015-11-03-01Viewpager加载多个Fragment,并设置Title
来源:互联网 发布:日程规划软件 编辑:程序博客网 时间:2024/06/07 19:54
- SyncHorizontalScrollViewjava
- MainActivityjava
- WebviewFragjava
- activity_mainxml
- fragment_commonxml
- nav_radiogroup_itemxml
效果图如下:
SyncHorizontalScrollView.java
public class SyncHorizontalScrollView extends HorizontalScrollView { // Todo... private View view; private ImageView leftImage;// 左标图片 private ImageView rightImage;// 右标图片 private int windowWitdh = 0;// 屏幕宽度 private Activity mContext; public void setSomeParam(View view, ImageView iv_nav_left, ImageView iv_nav_right, Activity context, int widthPixels) { this.view = view; this.mContext = context; this.leftImage = iv_nav_left; this.rightImage = iv_nav_right; this.windowWitdh = widthPixels; } // 显示和隐藏左右两边的箭头 public void showAndHideArrow() { if (!mContext.isFinishing() && view != null) { this.measure(0, 0); if (windowWitdh >= this.getMeasuredWidth()) { leftImage.setVisibility(View.GONE); rightImage.setVisibility(View.GONE); } else { if (this.getLeft() == 0) { leftImage.setVisibility(View.GONE); rightImage.setVisibility(View.VISIBLE); } else if (this.getRight() == this.getMeasuredWidth() - windowWitdh) { leftImage.setVisibility(View.VISIBLE); rightImage.setVisibility(View.GONE); } else { leftImage.setVisibility(View.VISIBLE); rightImage.setVisibility(View.VISIBLE); } } } } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (!mContext.isFinishing() && view != null && rightImage != null && leftImage != null) { if (view.getWidth() <= windowWitdh) { leftImage.setVisibility(View.GONE); rightImage.setVisibility(View.GONE); } else { if (l == 0) { leftImage.setVisibility(View.GONE); rightImage.setVisibility(View.VISIBLE); } else if (view.getWidth() - l == windowWitdh) { leftImage.setVisibility(View.VISIBLE); rightImage.setVisibility(View.GONE); } else { leftImage.setVisibility(View.VISIBLE); rightImage.setVisibility(View.VISIBLE); } } } }}
MainActivity.java
public class MainActivity extends FragmentActivity { public static final String ARGUMENTS_NAME = "arg"; private RelativeLayout rl_nav; private SyncHorizontalScrollView mHsv; private RadioGroup rg_nav_content; private ImageView iv_nav_indicator; private ImageView iv_nav_left; private ImageView iv_nav_right; private ViewPager mViewPager; private int indicatorWidth; // 导航条的标题宽度 private final int NUM_OF_TITLEBAR = 3; private LayoutInflater mInflater; private TabFragmentPagerAdapter mAdapter; private int currentIndicatorLeft = 0; public static String[] tabTitle = { "标题1", "标题2", "标题3","标题4","标题5"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(); initView(); setListener(); } private void findViewById() { rl_nav = (RelativeLayout) findViewById(R.id.rl_nav); mHsv = (SyncHorizontalScrollView) findViewById(R.id.mHsv); rg_nav_content = (RadioGroup) findViewById(R.id.rg_nav_content); iv_nav_indicator = (ImageView) findViewById(R.id.iv_nav_indicator); iv_nav_left = (ImageView) findViewById(R.id.iv_nav_left); iv_nav_right = (ImageView) findViewById(R.id.iv_nav_right); mViewPager = (ViewPager) findViewById(R.id.mViewPager); } private void initView() { DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); indicatorWidth = dm.widthPixels / NUM_OF_TITLEBAR; LayoutParams cursor_Params = iv_nav_indicator.getLayoutParams(); cursor_Params.width = indicatorWidth; iv_nav_indicator.setLayoutParams(cursor_Params); mHsv.setSomeParam(rl_nav, iv_nav_left, iv_nav_right, this, dm.widthPixels); mInflater = (LayoutInflater) this .getSystemService(LAYOUT_INFLATER_SERVICE); initNavigationHSV(); mAdapter = new TabFragmentPagerAdapter(getSupportFragmentManager()); mViewPager.setAdapter(mAdapter); } private void initNavigationHSV() { rg_nav_content.removeAllViews(); for (int i = 0; i < tabTitle.length; i++) { RadioButton rb = (RadioButton) mInflater.inflate( R.layout.nav_radiogroup_item, null); rb.setId(i); rb.setText(tabTitle[i]); rb.setLayoutParams(new LayoutParams(indicatorWidth, LayoutParams.MATCH_PARENT)); rg_nav_content.addView(rb); } } public class TabFragmentPagerAdapter extends FragmentPagerAdapter { public TabFragmentPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int arg) { Fragment ft = null; switch (arg) { default: ft = new WebviewFrag(); break; } return ft; } @Override public int getCount() { return tabTitle.length; } } private void setListener() { // 左右滑动屏幕时候触发 mViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { if (rg_nav_content != null && rg_nav_content.getChildCount() > position) { ((RadioButton) rg_nav_content.getChildAt(position)) .performClick(); } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); rg_nav_content .setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (rg_nav_content.getChildAt(checkedId) != null) { TranslateAnimation animation = new TranslateAnimation( currentIndicatorLeft, ((RadioButton) rg_nav_content .getChildAt(checkedId)).getLeft(), 0f, 0f); animation.setInterpolator(new LinearInterpolator()); animation.setDuration(100); animation.setFillAfter(true); iv_nav_indicator.startAnimation(animation); mViewPager.setCurrentItem(checkedId); currentIndicatorLeft = ((RadioButton) rg_nav_content .getChildAt(checkedId)).getLeft(); mHsv.smoothScrollTo( (checkedId > 1 ? ((RadioButton) rg_nav_content .getChildAt(checkedId)).getLeft() : 0) - ((RadioButton) rg_nav_content .getChildAt(2)).getLeft(), 0); } } }); }}
WebviewFrag.java
public class WebviewFrag extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_common, container, false); WebView webView = (WebView) rootView.findViewById(R.id.webView); webView.loadUrl("http://www.baidu.com"); initWebView(webView); return rootView; } private void initWebView(WebView wv) { wv.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("file:") || url.startsWith("http:") || url.startsWith("https:")) { //view.loadUrl(url); return false; } else { return true; } } }); }}
activity_main.xml
<RelativeLayout 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" tools:context="${packageName}.${activityClass}" > <RelativeLayout android:id="@+id/rl_tab" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#F2F2F2" > <com.example.viewpager_fragment_demo.SyncHorizontalScrollView android:id="@+id/mHsv" android:layout_width="fill_parent" android:layout_height="40dip" android:fadingEdge="none" android:scrollbars="none" > <RelativeLayout android:id="@+id/rl_nav" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="top" android:background="#5AB0EB" > <RadioGroup android:id="@+id/rg_nav_content" android:layout_width="fill_parent" android:layout_height="38dip" android:layout_alignParentTop="true" android:background="#F2F2F2" android:orientation="horizontal" > </RadioGroup> <!-- 设置导航文字下方条标示线的颜色 --> <ImageView android:id="@+id/iv_nav_indicator" android:layout_width="1dip" android:layout_height="5dip" android:layout_alignParentBottom="true" android:background="#5AB0EB" android:contentDescription="@string/nav_desc" android:scaleType="matrix" /> </RelativeLayout> </com.example.viewpager_fragment_demo.SyncHorizontalScrollView> <ImageView android:id="@+id/iv_nav_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:contentDescription="@string/nav_desc" android:paddingBottom="1dip" android:src="@drawable/iv_navagation_scroll_left" android:visibility="gone" > </ImageView> <ImageView android:id="@+id/iv_nav_right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:contentDescription="@string/nav_desc" android:paddingBottom="1dip" android:src="@drawable/iv_navagation_scroll_right" android:visibility="visible" > </ImageView> </RelativeLayout> <android.support.v4.view.ViewPager android:id="@+id/mViewPager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_below="@id/rl_tab" android:layout_gravity="center" android:background="#ffffff" android:flipInterval="30" android:persistentDrawingCache="animation" /></RelativeLayout>
fragment_common.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" /></LinearLayout>
nav_radiogroup_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" /></LinearLayout>
完整的代码请点击此处访问。
0 0
- 2015-11-03-01Viewpager加载多个Fragment,并设置Title
- viewpager嵌套多个Fragment并处理点击事件
- viewpager加载fragment 时加载多页
- Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment
- Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment
- Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment
- ViewPager+Fragment滑动界面,并做延迟加载
- ViewPager+Fragment滑动界面,并做延迟加载【新版】
- ViewPager+Fragment滑动界面,并做延迟加载【新版】
- ViewPager+Fragment滑动界面,并做延迟加载【终极解决】
- viewpager中多fragment及时加载
- viewpager fragment 预加载
- 使用ViewPager加载Fragment
- ViewPager+Fragment延迟加载
- ViewPager+Fragment 延迟加载
- ViewPager+Fragment懒加载
- Viewpager Fragment懒加载
- ViewPager+Fragment懒加载
- SOCKET 网络字节序与主机字节序及其相互转换
- 黑马52期+28期+32期+46期最新android视频免费下载
- 读取本地图片到PICTUREBOX、以及和数据库指间的交互
- css3实现让人有点击欲望的按钮
- make clean、make mrproer 以及make distclean的区别
- 2015-11-03-01Viewpager加载多个Fragment,并设置Title
- 【Java并发编程实战】-----“J.U.C”:CyclicBarrier
- android模拟按键
- LeetCode---Lowest Common Ancestor of a Binary Tree
- 优化编译环境Optimizing a build environment (optional)
- SSCTF 2015 RE4解题分析
- iOS swift 通过Url打开自定义的app
- java中id为封装类时整形new出的对象为null
- 【Linux 内核】文件系统(四)