您的位置:首页 > 移动开发 > Android开发

Android ViewPager+Fragment 仿 Google Play 带箭头的导航栏

2015-06-03 16:07 791 查看
最近终于从繁忙的网络爬虫项目中解脱出来,回到久违的Android开发岗位,有时间研究Android 4.0的一些新特性,例如Fragment和ViewPager,参考了一些他人的代码,做出来了Google Play 首页的效果,在这里跟大家分享一下!

[java] view plaincopy
package com.example.playtabtest.view;

import android.app.Activity;

import android.content.Context;

import android.util.AttributeSet;

import android.util.DisplayMetrics;

import android.view.View;

import android.widget.HorizontalScrollView;

import android.widget.ImageView;

public class SyncHorizontalScrollView extends HorizontalScrollView {

private View view;

private ImageView leftImage;

private ImageView rightImage;

private int windowWitdh = 0;

private Activity mContext;

public void setSomeParam(View view, ImageView leftImage,

ImageView rightImage, Activity context) {

this.mContext = context;

this.view = view;

this.leftImage = leftImage;

this.rightImage = rightImage;

DisplayMetrics dm = new DisplayMetrics();

this.mContext.getWindowManager().getDefaultDisplay().getMetrics(dm);

windowWitdh = dm.widthPixels;

}

public SyncHorizontalScrollView(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

public SyncHorizontalScrollView(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

}

// 显示和隐藏左右两边的箭头

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);

}

}

}

}

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);

}

}

}

}

}

以下是两个Fragment的源代码

LaunchUIFragment.java

[java] view plaincopy
package com.example.playtabtest.fragment;

import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.TextView;

import com.example.playtabtest.MainActivity;

import com.example.playtabtest.R;

public class CommonUIFragment extends Fragment {

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

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

TextView tv_tabName = (TextView) rootView.findViewById(R.id.tv_tabName);

Bundle bundle = getArguments();

tv_tabName.setText(bundle.getString(MainActivity.ARGUMENTS_NAME, ""));

return rootView;

}

@Override

public void onActivityCreated(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onActivityCreated(savedInstanceState);

}

}

源码下载地址:http://download.csdn.net/detail/fx_sky/5475985
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  navigation android sliding