仿微信滑动Tab框架
2016-01-30 15:51
411 查看
1.activity界面
package cn.com.dsyc.canteenappforseller;
import cn.com.dsyc.canteenappforseller.widget.ActionBarItem;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
public class MainActivity extends FragmentActivity implements MyReceiver.OnReceiveListener {
private MyReceiver mReceiver;
private ActionBarItem[] mActionBarItems;
private FragmentBase[] mFragments;
private ViewPager mViewPager;
private int mPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mReceiver = new MyReceiver(this);
mReceiver.register(this);
findWidget();
createTabs();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mReceiver.unregister(this);
}
@Override
public void onReceive(String action) {
// TODO Auto-generated method stub
if (action.equals(MyReceiver.ACTION_LOGOUT)) {
finish();
}
}
private void createTabs() {
OnClickListener tabItemClickListener = new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int position = (Integer)v.getTag();
mViewPager.setCurrentItem(position, false);
}
};
mActionBarItems = new ActionBarItem[]{
new ActionBarItem(this, R.string.scan, R.drawable.scan_selected, R.drawable.scan_normal, R.color.action_bar_text_on_color, R.color.action_bar_text_color),
new ActionBarItem(this, R.string.manage, R.drawable.manage_selected, R.drawable.manage_normal, R.color.action_bar_text_on_color, R.color.action_bar_text_color),
new ActionBarItem(this, R.string.me, R.drawable.me_selected, R.drawable.me_normal, R.color.action_bar_text_on_color, R.color.action_bar_text_color)
};
for (int i = 0; i < mActionBarItems.length; i++) {
mActionBarItems[i].setTag(i);
mActionBarItems[i].setOnClickListener(tabItemClickListener);
}
LinearLayout llTabs = (LinearLayout)findViewById(R.id.ll_tabs);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT);
layoutParams.weight = 1;
for (ActionBarItem tabItem : mActionBarItems) {
llTabs.addView(tabItem, layoutParams);
}
mFragments = new FragmentBase[] {
new ScanFragment(),
new ManageFragment(),
new MeFragment()
};
mViewPager.setOffscreenPageLimit(mFragments.length - 1);
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()){
@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
return mFragments[position];
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mFragments.length;
}
});
mViewPager.setOnPageChangeListener(new OnPageChangeListener(){
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
// TODO Auto-generated method stub
if (positionOffset > 0) {
if (mPosition == position)
transitTabItem(position + 1, positionOffset);
else
transitTabItem(position, 1 - positionOffset);
}
}
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
setTabItemOn(position);
}
@Override
public void onPageScrollStateChanged(int state) {
// TODO Auto-generated method stub
}
});
mPosition = 0;
mActionBarItems[mPosition].setOnPercent(1);
mViewPager.setCurrentItem(mPosition);
}<pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif;"> private void findWidget() {</span> mViewPager = (ViewPager)findViewById(R.id.vp);}private void transitTabItem(int position, float percent) {mActionBarItems[position].setOnPercent(percent);mActionBarItems[position].setOnPercent(percent);}private void setTabItemOn(int position)
{mActionBarItems[mPosition].setOnPercent(0);mPosition = position;mActionBarItems[mPosition].setOnPercent(1);}}
2、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"
android:background="@color/white"
tools:context=".MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/divider" />
<View
android:id="@id/divider"
style="@style/Divider"
android:layout_above="@+id/ll_tabs" />
<LinearLayout
android:id="@+id/ll_tabs"
android:layout_width="match_parent"
android:layout_height="@dimen/action_bar_height"
android:layout_alignParentBottom="true"
android:background="@color/action_bar_background"
android:orientation="horizontal" />
</RelativeLayout>3.ActionBarItem.java
package cn.com.dsyc.canteenappforseller.widget;
import cn.com.dsyc.canteenappforseller.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
public class ActionBarItem extends FrameLayout {
private ActionBarIconView mTabIconView;
private ActionBarTitleView mTabTitleView;
private ImageView mImageViewUnread;
private TextView mTextViewUnread;
public ActionBarItem(Context context) {
super(context);
// TODO Auto-generated constructor stub
init();
}
public ActionBarItem(Context context, int textId, int onResId, int offResId, int onTextColorId, int offTextColorId) {
super(context);
// TODO Auto-generated constructor stub
init();
mTabIconView.setImageResource(onResId, offResId);
mTabTitleView.setTextColorResource(onTextColorId, offTextColorId);
mTabTitleView.setText(textId);
mImageViewUnread.setVisibility(GONE);
mTextViewUnread.setVisibility(GONE);
}
public void setUnread(boolean hasUnread) {
mImageViewUnread.setVisibility(hasUnread ? VISIBLE : GONE);
mTextViewUnread.setVisibility(GONE);
}
public void setUnread(int count) {
mImageViewUnread.setVisibility(GONE);
if (count == 0) {
mTextViewUnread.setVisibility(GONE);
} else {
mTextViewUnread.setVisibility(VISIBLE);
mTextViewUnread.setText(String.valueOf(count));
}
}
public void setOnPercent(float onPercent) {
mTabIconView.setOnPercent(onPercent);
mTabTitleView.setOnPercent(onPercent);
}
private void init() {
LayoutInflater.from(getContext()).inflate(R.layout.action_bar_item, this, true);
findWidget();
}
private void findWidget() {
mTabIconView = (ActionBarIconView)findViewById(R.id.tiv);
mTabTitleView = (ActionBarTitleView)findViewById(R.id.ttv);
mImageViewUnread = (ImageView)findViewById(R.id.iv_unread);
mTextViewUnread = (TextView)findViewById(R.id.tv_unread);
}
}
4、ActionBarIconView.java
package cn.com.dsyc.canteenappforseller.widget;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.util.AttributeSet;
import android.widget.ImageView;
public class ActionBarIconView extends ImageView {
private LayerDrawable mLayerDrawable;
public ActionBarIconView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ActionBarIconView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public ActionBarIconView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public void setImageResource(int onResId, int offResId) {
// TODO Auto-generated method stub
Drawable[] drawables = new Drawable[] {
getResources().getDrawable(onResId),
getResources().getDrawable(offResId) };
mLayerDrawable = new LayerDrawable(drawables);
setOnPercent(0);
}
public void setOnPercent(float onPercent) {
mLayerDrawable.getDrawable(0).setAlpha(Math.round(255 * onPercent));
mLayerDrawable.getDrawable(1).setAlpha(Math.round(255 * (1 - onPercent)));
setImageDrawable(mLayerDrawable);
}
}
5.ActionBarTitleView.java
package cn.com.dsyc.canteenappforseller.widget;
import cn.com.dsyc.canteenappforseller.utility.ColorHelper;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
public class ActionBarTitleView extends TextView {
private int mOnColor;
private int mOffColor;
public ActionBarTitleView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ActionBarTitleView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public ActionBarTitleView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public void setTextColorResource(int onColorId, int offColorId) {
// TODO Auto-generated method stub
mOnColor = getResources().getColor(onColorId);
mOffColor = getResources().getColor(offColorId);
}
public void setOnPercent(float onPercent) {
int color = ColorHelper.getMixColor(mOnColor, onPercent, mOffColor, 1 - onPercent);
setTextColor(color);
}
}
5.ManageFragment.java
package cn.com.dsyc.canteenappforseller;
import android.content.Intent;
import android.os.Bundle;
fe28
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class ManageFragment extends FragmentBase {
private ListView mListView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_manage, container, false);
setTitleText(view, R.string.manage);
findWidget(view);
show();
return view;
}
private void findWidget(View view) {
mListView = (ListView)view.findViewById(R.id.lv);
}
private void show() {
SettingItem[] items = {
new SettingItem(R.drawable.manage_canteen, R.string.manage_canteen),
new SettingItem(R.drawable.manage_category, R.string.manage_category),
new SettingItem(R.drawable.manage_dish, R.string.manage_dish),
new SettingItem(R.drawable.manage_period, R.string.manage_period),
new SettingItem(R.drawable.manage_schedule, R.string.manage_schedule),
new SettingItem(R.drawable.manage_order, R.string.manage_order),
new SettingItem(R.drawable.manage_comment, R.string.manage_comment),
new SettingItem(R.drawable.manage_preview, R.string.manage_preview)
};
mListView.setAdapter(new SettingAdapter(getActivity(), items));
mListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int)id) {
case R.string.manage_canteen: showCanteen(); break;
case R.string.manage_category: showCategory();break;
case R.string.manage_dish: showDish();break;
case R.string.manage_period: showPeriod();break;
case R.string.manage_schedule: showSchedule(); break;
case R.string.manage_order: showOrder();break;
case R.string.manage_comment: showComment(); break;
case R.string.manage_preview: showPreview();break;
}
}
});
}
private void showPreview() {
Intent intent = new Intent(getActivity(), PreviewActivity.class);
startActivity(intent);
}
private void showOrder() {
Intent intent = new Intent(getActivity(), OrderActivity.class);
startActivity(intent);
}
private void showPeriod() {
Intent intent = new Intent(getActivity(), PeriodActivity.class);
startActivity(intent);
}
private void showDish() {
Intent intent = new Intent(getActivity(), DishActivity.class);
startActivity(intent);
}
private void showCategory() {
Intent intent = new Intent(getActivity(), CategoryActivity.class);
startActivity(intent);
}
private void showCanteen() {
Intent intent = new Intent(getActivity(), CanteenActivity.class);
startActivity(intent);
}
private void showSchedule() {
Intent intent = new Intent(getActivity(), ScheduleActivity.class);
startActivity(intent);
}
private void showComment() {
Intent intent = new Intent(getActivity(), DishCommentActivity.class);
startActivity(intent);
}
}
6.MeFragment.java
package cn.com.dsyc.canteenappforseller;
import cn.com.dsyc.canteenappforseller.model.Seller;
import cn.com.dsyc.canteenappforseller.utility.RequestCode;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class MeFragment extends FragmentBase {
private ListView mListViewSeller;
private ListView mListViewCommon;
private ListView mListViewWallet;
private ListView mListViewSetting;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_me, container, false);
setTitleText(view, R.string.me);
findWidget(view);
showSeller();
showCommon();
showWallet();
showSetting();
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode == RequestCode.EDIT) {
if (resultCode == Activity.RESULT_OK)
showSeller();
}
}
private void findWidget(View view) {
mListViewSeller = (ListView) view.findViewById(R.id.lv_seller);
mListViewCommon = (ListView) view.findViewById(R.id.lv_common);
mListViewWallet = (ListView) view.findViewById(R.id.lv_wallet);
mListViewSetting = (ListView) view.findViewById(R.id.lv_setting);
}
private void showSeller() {
App app = (App) getActivity().getApplication();
Seller model = app.getSeller();
SettingItem[] items = {
new SettingItem(R.drawable.seller, R.string.me_seller, model.UserName) };
mListViewSeller.setAdapter(new SettingAdapter(getActivity(), items));
mListViewSeller.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int) id) {
case R.string.me_seller:
doSeller();
break;
}
}
});
}
private void showCommon() {
SettingItem[] items = {
new SettingItem(R.drawable.photo_album, R.string.me_photo_album),
new SettingItem(R.drawable.favorites, R.string.me_favorites),
new SettingItem(R.drawable.share, R.string.me_share) };
mListViewCommon.setAdapter(new SettingAdapter(getActivity(), items));
mListViewCommon.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int) id) {
case R.string.me_share:
doShare();
break;
}
}
});
}
private void showWallet() {
SettingItem[] items = { new SettingItem(R.drawable.wallet,
R.string.me_wallet), };
mListViewWallet.setAdapter(new SettingAdapter(getActivity(), items));
}
private void showSetting() {
SettingItem[] items = { new SettingItem(R.drawable.setting,
R.string.me_setting), };
mListViewSetting.setAdapter(new SettingAdapter(getActivity(), items));
mListViewSetting.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int) id) {
case R.string.me_setting:
doSetting();
break;
}
}
});
}
private void doSeller() {
Intent intent = new Intent(getActivity(), PersonalInfoActivity.class);
startActivity(intent);
}
private void doShare() {
Intent intent = new Intent(getActivity(), ShareActivity.class);
startActivity(intent);
}
private void doSetting() {
Intent intent = new Intent(getActivity(), SettingActivity.class);
startActivity(intent);
}
}
package cn.com.dsyc.canteenappforseller;
import cn.com.dsyc.canteenappforseller.widget.ActionBarItem;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
public class MainActivity extends FragmentActivity implements MyReceiver.OnReceiveListener {
private MyReceiver mReceiver;
private ActionBarItem[] mActionBarItems;
private FragmentBase[] mFragments;
private ViewPager mViewPager;
private int mPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mReceiver = new MyReceiver(this);
mReceiver.register(this);
findWidget();
createTabs();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mReceiver.unregister(this);
}
@Override
public void onReceive(String action) {
// TODO Auto-generated method stub
if (action.equals(MyReceiver.ACTION_LOGOUT)) {
finish();
}
}
private void createTabs() {
OnClickListener tabItemClickListener = new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int position = (Integer)v.getTag();
mViewPager.setCurrentItem(position, false);
}
};
mActionBarItems = new ActionBarItem[]{
new ActionBarItem(this, R.string.scan, R.drawable.scan_selected, R.drawable.scan_normal, R.color.action_bar_text_on_color, R.color.action_bar_text_color),
new ActionBarItem(this, R.string.manage, R.drawable.manage_selected, R.drawable.manage_normal, R.color.action_bar_text_on_color, R.color.action_bar_text_color),
new ActionBarItem(this, R.string.me, R.drawable.me_selected, R.drawable.me_normal, R.color.action_bar_text_on_color, R.color.action_bar_text_color)
};
for (int i = 0; i < mActionBarItems.length; i++) {
mActionBarItems[i].setTag(i);
mActionBarItems[i].setOnClickListener(tabItemClickListener);
}
LinearLayout llTabs = (LinearLayout)findViewById(R.id.ll_tabs);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT);
layoutParams.weight = 1;
for (ActionBarItem tabItem : mActionBarItems) {
llTabs.addView(tabItem, layoutParams);
}
mFragments = new FragmentBase[] {
new ScanFragment(),
new ManageFragment(),
new MeFragment()
};
mViewPager.setOffscreenPageLimit(mFragments.length - 1);
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()){
@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
return mFragments[position];
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mFragments.length;
}
});
mViewPager.setOnPageChangeListener(new OnPageChangeListener(){
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
// TODO Auto-generated method stub
if (positionOffset > 0) {
if (mPosition == position)
transitTabItem(position + 1, positionOffset);
else
transitTabItem(position, 1 - positionOffset);
}
}
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
setTabItemOn(position);
}
@Override
public void onPageScrollStateChanged(int state) {
// TODO Auto-generated method stub
}
});
mPosition = 0;
mActionBarItems[mPosition].setOnPercent(1);
mViewPager.setCurrentItem(mPosition);
}<pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif;"> private void findWidget() {</span> mViewPager = (ViewPager)findViewById(R.id.vp);}private void transitTabItem(int position, float percent) {mActionBarItems[position].setOnPercent(percent);mActionBarItems[position].setOnPercent(percent);}private void setTabItemOn(int position)
{mActionBarItems[mPosition].setOnPercent(0);mPosition = position;mActionBarItems[mPosition].setOnPercent(1);}}
2、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"
android:background="@color/white"
tools:context=".MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/divider" />
<View
android:id="@id/divider"
style="@style/Divider"
android:layout_above="@+id/ll_tabs" />
<LinearLayout
android:id="@+id/ll_tabs"
android:layout_width="match_parent"
android:layout_height="@dimen/action_bar_height"
android:layout_alignParentBottom="true"
android:background="@color/action_bar_background"
android:orientation="horizontal" />
</RelativeLayout>3.ActionBarItem.java
package cn.com.dsyc.canteenappforseller.widget;
import cn.com.dsyc.canteenappforseller.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
public class ActionBarItem extends FrameLayout {
private ActionBarIconView mTabIconView;
private ActionBarTitleView mTabTitleView;
private ImageView mImageViewUnread;
private TextView mTextViewUnread;
public ActionBarItem(Context context) {
super(context);
// TODO Auto-generated constructor stub
init();
}
public ActionBarItem(Context context, int textId, int onResId, int offResId, int onTextColorId, int offTextColorId) {
super(context);
// TODO Auto-generated constructor stub
init();
mTabIconView.setImageResource(onResId, offResId);
mTabTitleView.setTextColorResource(onTextColorId, offTextColorId);
mTabTitleView.setText(textId);
mImageViewUnread.setVisibility(GONE);
mTextViewUnread.setVisibility(GONE);
}
public void setUnread(boolean hasUnread) {
mImageViewUnread.setVisibility(hasUnread ? VISIBLE : GONE);
mTextViewUnread.setVisibility(GONE);
}
public void setUnread(int count) {
mImageViewUnread.setVisibility(GONE);
if (count == 0) {
mTextViewUnread.setVisibility(GONE);
} else {
mTextViewUnread.setVisibility(VISIBLE);
mTextViewUnread.setText(String.valueOf(count));
}
}
public void setOnPercent(float onPercent) {
mTabIconView.setOnPercent(onPercent);
mTabTitleView.setOnPercent(onPercent);
}
private void init() {
LayoutInflater.from(getContext()).inflate(R.layout.action_bar_item, this, true);
findWidget();
}
private void findWidget() {
mTabIconView = (ActionBarIconView)findViewById(R.id.tiv);
mTabTitleView = (ActionBarTitleView)findViewById(R.id.ttv);
mImageViewUnread = (ImageView)findViewById(R.id.iv_unread);
mTextViewUnread = (TextView)findViewById(R.id.tv_unread);
}
}
4、ActionBarIconView.java
package cn.com.dsyc.canteenappforseller.widget;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.util.AttributeSet;
import android.widget.ImageView;
public class ActionBarIconView extends ImageView {
private LayerDrawable mLayerDrawable;
public ActionBarIconView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ActionBarIconView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public ActionBarIconView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public void setImageResource(int onResId, int offResId) {
// TODO Auto-generated method stub
Drawable[] drawables = new Drawable[] {
getResources().getDrawable(onResId),
getResources().getDrawable(offResId) };
mLayerDrawable = new LayerDrawable(drawables);
setOnPercent(0);
}
public void setOnPercent(float onPercent) {
mLayerDrawable.getDrawable(0).setAlpha(Math.round(255 * onPercent));
mLayerDrawable.getDrawable(1).setAlpha(Math.round(255 * (1 - onPercent)));
setImageDrawable(mLayerDrawable);
}
}
5.ActionBarTitleView.java
package cn.com.dsyc.canteenappforseller.widget;
import cn.com.dsyc.canteenappforseller.utility.ColorHelper;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
public class ActionBarTitleView extends TextView {
private int mOnColor;
private int mOffColor;
public ActionBarTitleView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ActionBarTitleView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public ActionBarTitleView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public void setTextColorResource(int onColorId, int offColorId) {
// TODO Auto-generated method stub
mOnColor = getResources().getColor(onColorId);
mOffColor = getResources().getColor(offColorId);
}
public void setOnPercent(float onPercent) {
int color = ColorHelper.getMixColor(mOnColor, onPercent, mOffColor, 1 - onPercent);
setTextColor(color);
}
}
5.ManageFragment.java
package cn.com.dsyc.canteenappforseller;
import android.content.Intent;
import android.os.Bundle;
fe28
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class ManageFragment extends FragmentBase {
private ListView mListView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_manage, container, false);
setTitleText(view, R.string.manage);
findWidget(view);
show();
return view;
}
private void findWidget(View view) {
mListView = (ListView)view.findViewById(R.id.lv);
}
private void show() {
SettingItem[] items = {
new SettingItem(R.drawable.manage_canteen, R.string.manage_canteen),
new SettingItem(R.drawable.manage_category, R.string.manage_category),
new SettingItem(R.drawable.manage_dish, R.string.manage_dish),
new SettingItem(R.drawable.manage_period, R.string.manage_period),
new SettingItem(R.drawable.manage_schedule, R.string.manage_schedule),
new SettingItem(R.drawable.manage_order, R.string.manage_order),
new SettingItem(R.drawable.manage_comment, R.string.manage_comment),
new SettingItem(R.drawable.manage_preview, R.string.manage_preview)
};
mListView.setAdapter(new SettingAdapter(getActivity(), items));
mListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int)id) {
case R.string.manage_canteen: showCanteen(); break;
case R.string.manage_category: showCategory();break;
case R.string.manage_dish: showDish();break;
case R.string.manage_period: showPeriod();break;
case R.string.manage_schedule: showSchedule(); break;
case R.string.manage_order: showOrder();break;
case R.string.manage_comment: showComment(); break;
case R.string.manage_preview: showPreview();break;
}
}
});
}
private void showPreview() {
Intent intent = new Intent(getActivity(), PreviewActivity.class);
startActivity(intent);
}
private void showOrder() {
Intent intent = new Intent(getActivity(), OrderActivity.class);
startActivity(intent);
}
private void showPeriod() {
Intent intent = new Intent(getActivity(), PeriodActivity.class);
startActivity(intent);
}
private void showDish() {
Intent intent = new Intent(getActivity(), DishActivity.class);
startActivity(intent);
}
private void showCategory() {
Intent intent = new Intent(getActivity(), CategoryActivity.class);
startActivity(intent);
}
private void showCanteen() {
Intent intent = new Intent(getActivity(), CanteenActivity.class);
startActivity(intent);
}
private void showSchedule() {
Intent intent = new Intent(getActivity(), ScheduleActivity.class);
startActivity(intent);
}
private void showComment() {
Intent intent = new Intent(getActivity(), DishCommentActivity.class);
startActivity(intent);
}
}
6.MeFragment.java
package cn.com.dsyc.canteenappforseller;
import cn.com.dsyc.canteenappforseller.model.Seller;
import cn.com.dsyc.canteenappforseller.utility.RequestCode;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class MeFragment extends FragmentBase {
private ListView mListViewSeller;
private ListView mListViewCommon;
private ListView mListViewWallet;
private ListView mListViewSetting;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_me, container, false);
setTitleText(view, R.string.me);
findWidget(view);
showSeller();
showCommon();
showWallet();
showSetting();
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode == RequestCode.EDIT) {
if (resultCode == Activity.RESULT_OK)
showSeller();
}
}
private void findWidget(View view) {
mListViewSeller = (ListView) view.findViewById(R.id.lv_seller);
mListViewCommon = (ListView) view.findViewById(R.id.lv_common);
mListViewWallet = (ListView) view.findViewById(R.id.lv_wallet);
mListViewSetting = (ListView) view.findViewById(R.id.lv_setting);
}
private void showSeller() {
App app = (App) getActivity().getApplication();
Seller model = app.getSeller();
SettingItem[] items = {
new SettingItem(R.drawable.seller, R.string.me_seller, model.UserName) };
mListViewSeller.setAdapter(new SettingAdapter(getActivity(), items));
mListViewSeller.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int) id) {
case R.string.me_seller:
doSeller();
break;
}
}
});
}
private void showCommon() {
SettingItem[] items = {
new SettingItem(R.drawable.photo_album, R.string.me_photo_album),
new SettingItem(R.drawable.favorites, R.string.me_favorites),
new SettingItem(R.drawable.share, R.string.me_share) };
mListViewCommon.setAdapter(new SettingAdapter(getActivity(), items));
mListViewCommon.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int) id) {
case R.string.me_share:
doShare();
break;
}
}
});
}
private void showWallet() {
SettingItem[] items = { new SettingItem(R.drawable.wallet,
R.string.me_wallet), };
mListViewWallet.setAdapter(new SettingAdapter(getActivity(), items));
}
private void showSetting() {
SettingItem[] items = { new SettingItem(R.drawable.setting,
R.string.me_setting), };
mListViewSetting.setAdapter(new SettingAdapter(getActivity(), items));
mListViewSetting.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int) id) {
case R.string.me_setting:
doSetting();
break;
}
}
});
}
private void doSeller() {
Intent intent = new Intent(getActivity(), PersonalInfoActivity.class);
startActivity(intent);
}
private void doShare() {
Intent intent = new Intent(getActivity(), ShareActivity.class);
startActivity(intent);
}
private void doSetting() {
Intent intent = new Intent(getActivity(), SettingActivity.class);
startActivity(intent);
}
}
package cn.com.dsyc.canteenappforseller; import android.content.DialogInterface.OnDismissListener; import android.os.Message; import android.support.v4.app.Fragment; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; public abstract class FragmentBase extends Fragment implements MyHandler.OnHandleListener { private MyHandler mHandler = new MyHandler(this); private ProgressDialog mProgressDialog; private boolean mFindWidget = true; private ImageButton mTitleBarImageButtonBackArrow; private View mTitleBarDivider; private TextView mTitleBarTextViewTitle; private Button mTitleBarButtonTitle; private FrameLayout mTitleBarFrameLayout1; private ImageButton mTitleBarImageButton1; private ImageView mTitleBarImageView1; private FrameLayout mTitleBarFrameLayout2; private ImageButton mTitleBarImageButton2; private ImageView mTitleBarImageView2; private Button mTitleBarButton; private RelativeLayout mLoadingBarRelativeLayout; protected void setTitleText(View view, int resId) { findWidget(view); mTitleBarTextViewTitle.setText(resId); } protected void setTitleButton(View view, String text, Object tag, OnClickListener listener) { findWidget(view); mTitleBarButtonTitle.setText(text); mTitleBarButtonTitle.setTag(tag); if (listener == null) mTitleBarButtonTitle.setEnabled(false); else { mTitleBarButtonTitle.setEnabled(true); mTitleBarButtonTitle.setOnClickListener(listener); } } protected void showBackArrow(View view, OnClickListener l) { findWidget(view); mTitleBarImageButtonBackArrow.setVisibility(View.VISIBLE); mTitleBarImageButtonBackArrow.setOnClickListener(l); mTitleBarDivider.setVisibility(View.VISIBLE); } protected void showImageButton1(View view, int resId, OnClickListener l) { findWidget(view); mTitleBarImageButton1.setImageResource(resId); mTitleBarImageButton1.setOnClickListener(l); mTitleBarFrameLayout1.setVisibility(View.VISIBLE); } protected void showImageView1(boolean visible) { mTitleBarImageView1.setVisibility(visible ? View.VISIBLE : View.GONE); } protected void showImageButton2(View view, int resId, OnClickListener l) { findWidget(view); mTitleBarImageButton2.setImageResource(resId); mTitleBarImageButton2.setOnClickListener(l); mTitleBarFrameLayout2.setVisibility(View.VISIBLE); } protected void showImageView2(boolean visible) { mTitleBarImageView2.setVisibility(visible ? View.VISIBLE : View.GONE); } protected void showButton(View view, int resId, OnClickListener l) { findWidget(view); mTitleBarButton.setText(resId); mTitleBarButton.setOnClickListener(l); mTitleBarButton.setVisibility(View.VISIBLE); } protected void enableButton(View view, boolean enabled) { findWidget(view); mTitleBarButton.setEnabled(enabled); } protected void showProgressDialog(int textId) { mProgressDialog = new ProgressDialog(getActivity(), textId); mProgressDialog.show(); } protected void hideProgressDialog() { if (mProgressDialog == null) return; mProgressDialog.dismiss(); mProgressDialog = null; } protected void showLoadingBar() { mLoadingBarRelativeLayout.setVisibility(View.VISIBLE); } protected void hideLoadingBar() { mLoadingBarRelativeLayout.setVisibility(View.GONE); } protected void sendMessage(int what) { sendMessage(what, null); } protected void sendMessage(int what, Object obj) { Message message = mHandler.obtainMessage(); message.what = what; message.obj = obj; mHandler.sendMessage(message); } @Override public void onHandle(int what, Object obj) { } protected void showAlertDialog(int messageId, int titleId, OnDismissListener l) { String message = getString(messageId); showAlertDialog(message, titleId, l); } protected void showAlertDialog(String message, int titleId, OnDismissListener l) { AlertDialog dialog = new AlertDialog(getActivity(), message, titleId); dialog.setOnDismissListener(l); dialog.show(); } protected void showAlertDialog(int messageId) { showAlertDialog(messageId, -1, null); } protected void showAlertDialog(int messageId, int titleId) { showAlertDialog(messageId, titleId, null); } protected void showAlertDialog(String message) { showAlertDialog(message, -1, null); } protected void showAlertDialog(String message, int titleId) { showAlertDialog(message, titleId, null); } private void findWidget(View view) { if (!mFindWidget) return; mFindWidget = false; mTitleBarImageButtonBackArrow = (ImageButton)view.findViewById(R.id.title_bar_ib_back_arrow); mTitleBarDivider = view.findViewById(R.id.title_bar_divider); mTitleBarTextViewTitle = (TextView)view.findViewById(R.id.title_bar_tv_title); mTitleBarButtonTitle = (Button)view.findViewById(R.id.title_bar_btn_title); mTitleBarFrameLayout1 = (FrameLayout)view.findViewById(R.id.title_bar_fl1); mTitleBarImageButton1 = (ImageButton)view.findViewById(R.id.title_bar_ib1); mTitleBarImageView1 = (ImageView)view.findViewById(R.id.title_bar_iv1); mTitleBarFrameLayout2 = (FrameLayout)view.findViewById(R.id.title_bar_fl2); mTitleBarImageButton2 = (ImageButton)view.findViewById(R.id.title_bar_ib2); mTitleBarImageView2 = (ImageView)view.findViewById(R.id.title_bar_iv2); mTitleBarButton = (Button)view.findViewById(R.id.title_bar_btn); mLoadingBarRelativeLayout = (RelativeLayout)view.findViewById(R.id.loading_bar_rl); } }
package cn.com.dsyc.canteenappforseller; import java.io.IOException; import java.util.ArrayList; import java.util.List; import in.srain.cube.views.loadmore.LoadMoreContainer; import in.srain.cube.views.loadmore.LoadMoreHandler; import in.srain.cube.views.loadmore.LoadMoreListViewContainer; import in.srain.cube.views.ptr.PtrClassicFrameLayout; import in.srain.cube.views.ptr.PtrDefaultHandler; import in.srain.cube.views.ptr.PtrFrameLayout; import in.srain.cube.views.ptr.PtrHandler; import cn.com.dsyc.canteenappforseller.apiclient.ApiException; import cn.com.dsyc.canteenappforseller.apiclient.ApiOrder; import cn.com.dsyc.canteenappforseller.apiclient.ApiOrderItem; import cn.com.dsyc.canteenappforseller.model.Canteen; import cn.com.dsyc.canteenappforseller.model.OrderEx; import cn.com.dsyc.canteenappforseller.model.OrderItemEx; import cn.com.dsyc.canteenappforseller.model.Seller; import cn.com.dsyc.canteenappforseller.utility.RequestCode; import cn.com.dsyc.canteenappforseller.widget.LoadMoreFooterView; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.ListView; public class ScanFragment extends FragmentBase { private final static int PAGE_SIZE = 5; private PtrClassicFrameLayout mPtrClassicFrameLayout; private LoadMoreListViewContainer mLoadMoreListViewContainer; private Button mButtonCanteen; private Button mButtonScan; private ListView mListView; private int mCanteenNo; private String mCanteenName; private int mPageNumber; private int mTotalCount; private OrderExAdapter mAdapter; private List<OrderEx> mOrderExs; private SparseArray<OrderItemEx[]> mOrderItemExs; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.fragment_scan, container, false); setTitleText(view, R.string.scan); findView(view); mOrderExs = new ArrayList<OrderEx>(); mOrderItemExs = new SparseArray<OrderItemEx[]>(); App app = (App)getActivity().getApplication(); Canteen canteen = app.getFirstCanteen(); if (canteen == null) { mCanteenNo = -1; mCanteenName = ""; } else { mCanteenNo = canteen.No; mCanteenName = canteen.Name; } mButtonCanteen.setText(mCanteenName); mButtonCanteen.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(getActivity(), CanteenSelectActivity.class); intent.putExtra("CanteenNo", mCanteenNo); startActivityForResult(intent, RequestCode.SELECT); } }); mButtonScan.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(getActivity(), ScanActivity.class); intent.putExtra("CanteenNo", mCanteenNo); startActivityForResult(intent, RequestCode.SCAN); } }); mPtrClassicFrameLayout.setLastUpdateTimeRelateObject(this); mPtrClassicFrameLayout.setPtrHandler(new PtrHandler() { @Override public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) { return PtrDefaultHandler.checkContentCanBePulledDown(frame, mListView, header); } @Override public void onRefreshBegin(PtrFrameLayout frame) { mPageNumber = 1; mOrderExs.clear(); mOrderItemExs.clear(); loadData(); } }); LoadMoreFooterView footerView = new LoadMoreFooterView(getActivity()); mLoadMoreListViewContainer.setLoadMoreView(footerView); mLoadMoreListViewContainer.setLoadMoreUIHandler(footerView); mLoadMoreListViewContainer.setLoadMoreHandler(new LoadMoreHandler(){ @Override public void onLoadMore(LoadMoreContainer loadMoreContainer) { // TODO Auto-generated method stub mLoadMoreListViewContainer.postDelayed(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub loadDataMore(); } }, 1500); } }); loadData(); return view; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub if (requestCode == RequestCode.SELECT && resultCode == Activity.RESULT_OK) { mCanteenNo = data.getIntExtra("CanteenNo", -1); mCanteenName = data.getStringExtra("CanteenName"); mButtonCanteen.setText(mCanteenName); loadData(); } else if (requestCode == RequestCode.SCAN && resultCode == Activity.RESULT_OK) { loadData(); } } @Override public void onHandle(int what, Object obj) { // TODO Auto-generated method stub switch (what) { case R.id.msg_load: mPtrClassicFrameLayout.refreshComplete(); mLoadMoreListViewContainer.loadMoreFinish(mOrderExs.size() == 0, mTotalCount > mOrderExs.size()); showData(false); break; case R.id.msg_load_more: mLoadMoreListViewContainer.loadMoreFinish((Integer)obj == 0, mTotalCount > mOrderExs.size()); showData(true); break; case R.id.msg_network_disconnect: mPtrClassicFrameLayout.refreshComplete(); mLoadMoreListViewContainer.loadMoreFinish(true, true); showAlertDialog(R.string.please_check_network_connection); break; case R.id.msg_network_error: mPtrClassicFrameLayout.refreshComplete(); mLoadMoreListViewContainer.loadMoreFinish(true, true); showAlertDialog((String)obj); break; } } private void findView(View view) { mButtonCanteen = (Button) view.findViewById(R.id.btn_canteen); mButtonScan = (Button) view.findViewById(R.id.btn_scan); mLoadMoreListViewContainer = (LoadMoreListViewContainer) view.findViewById(R.id.lmlvc); mPtrClassicFrameLayout = (PtrClassicFrameLayout) view.findViewById(R.id.pcfl); mListView = (ListView) view.findViewById(R.id.lv); } private void loadData() { new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub App app = (App)getActivity().getApplication(); Seller seller = app.getSeller(); ApiOrder apiOrder = new ApiOrder(); ApiOrderItem apiOrderItem = new ApiOrderItem(); try { mOrderExs = new ArrayList<OrderEx>(); mOrderItemExs = new SparseArray<OrderItemEx[]>(); mPageNumber = 1; mTotalCount = apiOrder.getCount(seller.UserAccount, mCanteenNo); OrderEx[] listOrderEx = apiOrder.getPagedList(seller.UserAccount, mCanteenNo, PAGE_SIZE, mPageNumber); for (OrderEx modelOrderEx : listOrderEx) { mOrderExs.add(modelOrderEx); OrderItemEx[] listOrderItemEx = apiOrderItem.getListByOrder(modelOrderEx.No); mOrderItemExs.put(modelOrderEx.No, listOrderItemEx); } sendMessage(R.id.msg_load); } catch (IOException ex) { sendMessage(R.id.msg_network_disconnect); } catch (ApiException ex) { sendMessage(R.id.msg_network_error, ex.getMessage()); } } }).start(); } private void loadDataMore() { new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub App app = (App)getActivity().getApplication(); Seller seller = app.getSeller(); ApiOrder apiOrder = new ApiOrder(); ApiOrderItem apiOrderItem = new ApiOrderItem(); try { mPageNumber++; mTotalCount = apiOrder.getCount(seller.UserAccount, mCanteenNo); OrderEx[] listOrderEx = apiOrder.getPagedList(seller.UserAccount, mCanteenNo, PAGE_SIZE, mPageNumber); for (OrderEx modelOrderEx : listOrderEx) { mOrderExs.add(modelOrderEx); OrderItemEx[] listOrderItemEx = apiOrderItem.getListByOrder(modelOrderEx.No); mOrderItemExs.put(modelOrderEx.No, listOrderItemEx); } sendMessage(R.id.msg_load_more, listOrderEx.length); } catch (IOException ex) { sendMessage(R.id.msg_network_disconnect); } catch (ApiException ex) { sendMessage(R.id.msg_network_error, ex.getMessage()); } } }).start(); } private void showData(boolean append) { if (append) { mAdapter.notifyDataSetChanged(); } else { mAdapter = new OrderExAdapter(getActivity(), mOrderExs, mOrderItemExs); mListView.setAdapter(mAdapter); } } }
相关文章推荐
- 社交巨头三国杀:微信、WhatsApp、Line到底有啥区别?
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件