我们在淘宝购物下单了后,肯定是会去看订单页面的,因为这里,大家看到物流的信息和订单的编码等,最近有网友咨询小编手机淘宝订单页面设计方面的内容,想知道该如何去设计。
订单的页面效果如下:
需要设计订单页面话,一些代码是需要而更改的。布局代码如下。
[plain] view plain copy
布局很简单,就不多说明,然后就是mainactivity的代码了
[plain] view plain copypackage com.taobao.pll.tborderdemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
public class MainActivity extends Activity {
private RelativeLayout rl_person_alllist;//全部订单
private RelativeLayout rl_person_wait_pay;//待支付
private RelativeLayout rl_person_send;//待发货
private RelativeLayout rl_person_wait_get;//待收货
private RelativeLayout rl_person_aftermarket;//售后
private Intent intent;//需要启动的界面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initData() {
/**
* 全部订单
*/
rl_person_alllist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
intent = new Intent(getApplicationContext(),OrderActivity.class);
intent.putExtra("page",0);
startActivity(intent);
}
});
/**
* 待支付
*/
rl_person_wait_pay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
intent = new Intent(getApplicationContext(),OrderActivity.class);
intent.putExtra("page",1);
startActivity(intent);
}
});
/**
* 待发货
*/
rl_person_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
intent = new Intent(getApplicationContext(),OrderActivity.class);
intent.putExtra("page",2);
startActivity(intent);
}
});
/**
* 待收货
*/
rl_person_wait_get.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
intent = new Intent(getApplicationContext(),OrderActivity.class);
intent.putExtra("page",3);
startActivity(intent);
}
});
/**
* 售后
*/
rl_person_aftermarket.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
intent = new Intent(getApplicationContext(),OrderActivity.class);
intent.putExtra("page",4);
startActivity(intent);
}
});
}
private void initView() {
rl_person_alllist = (RelativeLayout) findViewById(R.id.rl_person_alllist);
rl_person_wait_pay = (RelativeLayout) findViewById(R.id.rl_person_wait_pay);
rl_person_send = (RelativeLayout) findViewById(R.id.rl_person_send);
rl_person_wait_get = (RelativeLayout) findViewById(R.id.rl_person_wait_get);
rl_person_aftermarket = (RelativeLayout) findViewById(R.id.rl_person_aftermarket);
}
}
这里需要说明就只有一点:intent.putExtra("page",0);因为每个点击都需要对应跳转页面的页卡选中哪个,所以需要传入一个page值
再来看OrderActivity的局部,这里稍微复杂那么一点点吧,使用的是radiogroup+viewpager,但是需要禁止左右滑动的,所以
我这里的viewpager是自定义的,先看布局,再看自定的viewpager吧。
[plain] view plain copy
[plain] view plain copypackage com.taobao.pll.tborderdemo.view;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
/**
* Created by pll on 2016/6/26.
*/
public class CustomViewPager extends ViewPager{
private boolean isCanScroll = false;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setScanScroll(boolean isCanScroll){
this.isCanScroll = isCanScroll;
}
@Override
public void scrollTo(int x, int y){
// if (isCanScroll){
super.scrollTo(x, y);
// }
}
@Override
public void setCurrentItem(int item) {
// TODO Auto-generated method stub
super.setCurrentItem(item);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
// TODO Auto-generated method stub
if (isCanScroll) {
return super.onTouchEvent(arg0);
} else {
return false;
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
// TODO Auto-generated method stub
if (isCanScroll) {
return super.onInterceptTouchEvent(arg0);
} else {
return false;
}
}
}
因为禁止左右滑动,viewpager也只是对 ontouchevent事件做了些处理,很简单,也就不解释了。
再来看OrderActivity.java代码
[plain] view plain copypackage com.taobao.pll.tborderdemo;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.util.DisplayMetrics;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.taobao.pll.tborderdemo.adapter.FragmentAdapter;
import com.taobao.pll.tborderdemo.fragment.OrderGetFragment;
import com.taobao.pll.tborderdemo.fragment.OrderListFragment;
import com.taobao.pll.tborderdemo.fragment.OrderPayFragment;
import com.taobao.pll.tborderdemo.fragment.OrderSendFragment;
import com.taobao.pll.tborderdemo.fragment.OrderServiceFragment;
import com.taobao.pll.tborderdemo.view.CustomViewPager;
import java.util.ArrayList;
import java.util.List;
public class OrderActivity extends FragmentActivity {
private List mFragmentList;//五个界面的集合
private FragmentAdapter mFragmentAdapter;//界面适配器
private CustomViewPager vp_order;//自定义viewpager
private int page;//得到选择的页码
private RadioGroup rg_order;//顶部页码
/**
* Tab显示内容TextView
*/
private RadioButton tv_order_all, tv_order_pay, tv_order_send, tv_order_get,tv_order_service;
//顶部导航栏的集合
private ArrayList tabList;
/**
* Tab的那个引导线
*/
private ImageView mTabLineIv;
/**
* Fragment
*/
private OrderListFragment mOrderListFragment;//全部订单
private OrderPayFragment mOrderPayFragment;//待支付
private OrderSendFragment mOderSendFragment;//待发货
private OrderGetFragment mOderGetFragment;//待收货
private OrderServiceFragment mOderServiceFragment;//售后服务
/**
* ViewPager的当前选中页
*/
private int currentIndex;
/**
* 屏幕的宽度
*/
private int screenWidth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order);
initView();
initData();
initTabLineWidth();
}
/**
* 设置滑动条的宽度为屏幕的1/5(根据Tab的个数而定)
*/
private void initTabLineWidth() {
DisplayMetrics dpMetrics = new DisplayMetrics();
getWindow().getWindowManager().getDefaultDisplay()
.getMetrics(dpMetrics);
screenWidth = dpMetrics.widthPixels;
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mTabLineIv
.getLayoutParams();
lp.width = screenWidth / 5;
mTabLineIv.setLayoutParams(lp);
}
private void initData() {
/**
* 进入时候根据page值设置导航栏选中哪个
*/
initDataForTopPage();
/**
* 加载引导页的数据
*/
mFragmentList = new ArrayList();
mOrderListFragment = new OrderListFragment();
mOrderPayFragment = new OrderPayFragment();
mOderSendFragment = new OrderSendFragment();
mOderGetFragment = new OrderGetFragment();
mOderServiceFragment = new OrderServiceFragment();
mFragmentList.add(mOrderListFragment);
mFragmentList.add(mOrderPayFragment);
mFragmentList.add(mOderSendFragment);
mFragmentList.add(mOderGetFragment);
mFragmentList.add(mOderServiceFragment);
mFragmentAdapter = new FragmentAdapter(this.getSupportFragmentManager(), mFragmentList);
vp_order.setAdapter(mFragmentAdapter);
vp_order.setCurrentItem(page);
vp_order.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mTabLineIv
.getLayoutParams();
/**
* 利用currentIndex(当前所在页面)和position(下一个页面)以及offset来
* 设置mTabLineIv的左边距 滑动场景:
* 记5个页面,
* 从左到右分别为0,1,2,3,4
* 0->1; 1->2; 2->3; 3->4; 4->3; 3->2;2->1; 1->0
*/
if (currentIndex == 0 && position == 0)// 0->1
{
lp.leftMargin = (int) (positionOffset * (screenWidth * 1.0 / 5) + currentIndex
* (screenWidth / 5));
} else if (currentIndex == 1 && position == 0) // 1->0
{
lp.leftMargin = (int) (-(1 - positionOffset)
* (screenWidth * 1.0 / 5) + currentIndex
* (screenWidth / 5));
} else if (currentIndex == 1 && position == 1) // 1->2
{
lp.leftMargin = (int) (positionOffset * (screenWidth * 1.0 / 5) + currentIndex
* (screenWidth / 5));
} else if (currentIndex == 2 && position == 1) // 2->1
{
lp.leftMargin = (int) (-(1 - positionOffset)
* (screenWidth * 1.0 / 5) + currentIndex
* (screenWidth / 5));
} else if (currentIndex == 2 && position == 2) // 2->3
{
lp.leftMargin = (int) (positionOffset * (screenWidth * 1.0 / 5) + currentIndex
* (screenWidth / 5));
} else if (currentIndex == 3 && position == 3) // 3->4
{
lp.leftMargin = (int) (positionOffset * (screenWidth * 1.0 / 5) + currentIndex
* (screenWidth / 5));
} else if (currentIndex == 3 && position == 2) // 3->2
{
lp.leftMargin = (int) (-(1 - positionOffset)
* (screenWidth * 1.0 / 5) + currentIndex
* (screenWidth / 5));
} else if (currentIndex == 4 && position == 3) // 4->3
{
lp.leftMargin = (int) (-(1 - positionOffset)
* (screenWidth * 1.0 / 5) + currentIndex
* (screenWidth / 5));
} else if (currentIndex == 4 && position == 4) // 4->3
{
lp.leftMargin = (int) (positionOffset * (screenWidth * 1.0 / 5) + currentIndex
* (screenWidth / 5));
}
mTabLineIv.setLayoutParams(lp);
}
/**
* position :当前页面,及你点击滑动的页面 offset:当前页面偏移的百分比
* offsetPixels:当前页面偏移的像素位置
*/
@Override
public void onPageSelected(int position) {
resetTextView();
switch (position) {
case 0:
tv_order_all.setTextColor(Color.BLUE);
break;
case 1:
tv_order_pay.setTextColor(Color.BLUE);
break;
case 2:
tv_order_send.setTextColor(Color.BLUE);
break;
case 3:
tv_order_get.setTextColor(Color.BLUE);
break;
case 4:
tv_order_service.setTextColor(Color.BLUE);
break;
}
currentIndex = position;
}
/**
* state滑动中的状态 有三种状态(0,1,2) 1:正在滑动 2:滑动完毕 0:什么都没做。
*/
@Override
public void onPageScrollStateChanged(int state) {
}
});
/**
* 顶部导航界面切换的监听
*/
rg_order.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
switch (checkedId) {
case R.id.tv_order_all:
vp_order.setCurrentItem(0);
break;
case R.id.tv_order_pay:
vp_order.setCurrentItem(1);
break;
case R.id.tv_order_send:
vp_order.setCurrentItem(2);
break;
case R.id.tv_order_get:
vp_order.setCurrentItem(3);
break;
case R.id.tv_order_service:
vp_order.setCurrentItem(4);
break;
}
}
});
}
private void initDataForTopPage() {
vp_order.setCurrentItem(0);
tabList = new ArrayList<>();
tabList.add(R.id.tv_order_all);
tabList.add(R.id.tv_order_pay);
tabList.add(R.id.tv_order_send);
tabList.add(R.id.tv_order_get);
tabList.add(R.id.tv_order_service);
rg_order.check(tabList.get(page));
resetTextView();
switch (page){
case 0:
tv_order_all.setTextColor(Color.BLUE);
break;
case 1:
tv_order_pay.setTextColor(Color.BLUE);
break;
case 2:
tv_order_send.setTextColor(Color.BLUE);
break;
case 3:
tv_order_get.setTextColor(Color.BLUE);
break;
case 4:
tv_order_service.setTextColor(Color.BLUE);
break;
}
currentIndex = page;
}
private void initView() {
vp_order = (CustomViewPager)findViewById(R.id.vp_order);
tv_order_all = (RadioButton)findViewById(R.id.tv_order_all);
tv_order_pay = (RadioButton)findViewById(R.id.tv_order_pay);
tv_order_send = (RadioButton)findViewById(R.id.tv_order_send);
tv_order_get = (RadioButton)findViewById(R.id.tv_order_get);
tv_order_service = (RadioButton)findViewById(R.id.tv_order_service);
mTabLineIv = (ImageView)findViewById(R.id.mTabLineIv);
rg_order = (RadioGroup)findViewById(R.id.rg_order);
page = getIntent().getIntExtra("page", -1);
}
/**
* 重置颜色
*/
private void resetTextView() {
tv_order_all.setTextColor(Color.parseColor("#777777"));
tv_order_pay.setTextColor(Color.parseColor("#777777"));
tv_order_send.setTextColor(Color.parseColor("#777777"));
tv_order_get.setTextColor(Color.parseColor("#777777"));
tv_order_service.setTextColor(Color.parseColor("#777777"));
}
}
这里用到的fragment界面布局很简单,就不粘贴出来了,需要说明的是Tab的引导线只根据viewpager和界面的宽度来设定的。
代码注释已经详细说明,还有个需要注意的是,如果禁止了左右滑动,直接代码调用setCurrentItem(page)是不会调用。
setOnPageChangeListener中的onPageSelected方法,所以需要在传入page值得时候,就手动把引导线和字体颜色进行改变。
其实订单页面设计方面已经牵扯到了程序方面了,这个都是技术的问题了。需要懂开发的朋友去进行操作哦,至于设计所用到的一些代码,小编在以上的内容中已经完全为大家整理出来了哦。
推荐阅读:
为什么淘宝查看不了订单详情页?买家如何看?
淘宝订单页面怎么设置发货?如何批量免邮?
为什么淘宝订单页面不显示抵扣淘金币?购物怎么默认抵扣金币?
上一篇: 上一篇:怎样可以开网店?需要做好哪些方面?
下一篇: 下一篇:淘宝卖家开通订单险有什么好处?开通的方法是什么?