Commit 465504c7 by 倪力烽

1. 完成调度功能框架的搭建

2. 完成调度界面的编写
3. 提交功能逻辑尚未编写
4. 需要结合接口进行测试
parent 194b9fcb
......@@ -9,20 +9,25 @@
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:label=""
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".LoginActivity" >
<!--<activity android:name=".LoginActivity" >-->
<!--<intent-filter>-->
<!--<action android:name="android.intent.action.MAIN" />-->
<!--<category android:name="android.intent.category.LAUNCHER" />-->
<!--</intent-filter>-->
<!--</activity>-->
<activity android:name=".MainActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"
android:launchMode="singleTop"
android:windowSoftInputMode="adjustResize"/>
</application>
</manifest>
\ No newline at end of file
......@@ -25,6 +25,7 @@ public class BaseActivity extends AppCompatActivity {
activity = this;
((MyApplication) UIUtils.getContext()).addActivity(this);
init();
}
@Override
protected void onResume() {
......
......@@ -6,7 +6,11 @@ import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
......@@ -19,6 +23,7 @@ import com.senthink.ebike_administrer_tool.fragment.SafeGuardFragment;
import com.senthink.ebike_administrer_tool.utils.UIUtils;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* @Description :
......@@ -28,6 +33,7 @@ import butterknife.BindView;
*/
public class MainActivity extends BaseActivity {
private Fragment currentFragment;
//Tab 文字
private final int[] TAB_TITLES = new int[]
{R.string.replace_battery,R.string.safeguard,
......@@ -46,26 +52,96 @@ public class MainActivity extends BaseActivity {
TabLayout mTabLayout;
@BindView(R.id.viewpager)
ViewPager mViewPager;
@BindView(R.id.main_toolbar)
Toolbar mToolbar;
private TextView mExtraTv;
private MyViewPagerAdapter viewPagerAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
// ButterKnife.bind(this);
initViews();
}
private void initViews() {
mTabLayout = (TabLayout)findViewById(R.id.tablayout);
setTabs(mTabLayout,this.getLayoutInflater(),TAB_TITLES,TAB_IMGS);
viewPagerAdapter = new MyViewPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mViewPager.setAdapter(viewPagerAdapter);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Fragment f = TAB_FRAGMENT[position];
setExtraText(f);
}
@Override
public void onPageScrollStateChanged(int state) {
if(state == 0){
Log.e(TAG, "onPageScrollStateChanged------>0");
}else if(state == 1){
Log.e(TAG, "onPageScrollStateChanged------>1");
}else if(state == 2){
Log.e(TAG, "onPageScrollStateChanged------>2");
}
}
});
mTabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
mToolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(mToolbar);
mExtraTv = (TextView) mToolbar.findViewById(R.id.tv_extra_text);
mExtraTv.setText(getString(R.string.list));
mExtraTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = mExtraTv.getText().toString();
if (text.equals(getString(R.string.list))) {
// 如果是显示的列表,则执行
Log.i(TAG, "onClick: list" );
}else if (text.equals(getString(R.string.submit))) {
}else if (text.equals(getString(R.string.logout))) {
finish();
}
}
});
// Log.i(TAG, "initViews: " + mToolbar.getChildCount());
}
public void setExtraText(Fragment fragment) {
if (fragment instanceof DispatchFragment) {
Log.i(TAG, "setExtraText: dispatch");
mExtraTv.setVisibility(View.VISIBLE);
mExtraTv.setText(getString(R.string.submit));
}else if (fragment instanceof ReplaceBatteryFragment) {
Log.i(TAG, "setExtraText: replaxe");
mExtraTv.setVisibility(View.VISIBLE);
mExtraTv.setText(getString(R.string.list));
}
else if (fragment instanceof MyInformationFragment) {
mExtraTv.setText(getString(R.string.logout));
Log.i(TAG, "setExtraText: me");
}
else if (fragment instanceof HandleIssueFragment) {
Log.i(TAG, "setExtraText: handle");
mExtraTv.setVisibility(View.INVISIBLE);
}
else if (fragment instanceof SafeGuardFragment) {
mExtraTv.setVisibility(View.INVISIBLE);
Log.i(TAG, "setExtraText: safe");
}
}
/**
* @description: 设置添加Tab
*/
......@@ -88,6 +164,7 @@ public class MainActivity extends BaseActivity {
* @description: ViewPager 适配器
*/
private class MyViewPagerAdapter extends FragmentPagerAdapter {
private Fragment mCurrentFragment;
public MyViewPagerAdapter(FragmentManager fm) {
super(fm);
}
......@@ -97,10 +174,12 @@ public class MainActivity extends BaseActivity {
return TAB_FRAGMENT[position];
}
@Override
public int getCount() {
return COUNT;
}
}
@Override
......
package com.senthink.ebike_administrer_tool.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.senthink.ebike_administrer_tool.R;
import com.senthink.ebike_administrer_tool.bean.dispatch.DispatchIn;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* @Description : 调车入库
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/11
*/
public class DispatchInAdapter extends RecyclerView.Adapter<DispatchInAdapter.DispatchInViewHolder> {
private Context mContext;
private List<DispatchIn> mList;
public DispatchInAdapter(Context context, List<DispatchIn> mList) {
this.mContext = context;
this.mList = mList;
}
@Override
public DispatchInViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.layout_dispatch_in_item,parent,false);
return new DispatchInViewHolder(view);
}
@Override
public void onBindViewHolder(DispatchInViewHolder holder, final int position) {
holder.mCarIdTv.setText(mList.get(position).getCarId());
holder.mDeleteIv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mList.remove(position);
notifyItemRemoved(position);
if (position != mList.size()) {
notifyItemRangeChanged(position, mList.size() - position);
}
}
});
}
@Override
public int getItemCount() {
return mList.size();
}
class DispatchInViewHolder extends RecyclerView.ViewHolder{
@BindView(R.id.tv_dispatch_in_car_id)
TextView mCarIdTv;
@BindView(R.id.iv_dispatch_in_delete)
ImageView mDeleteIv;
public DispatchInViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
package com.senthink.ebike_administrer_tool.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.senthink.ebike_administrer_tool.R;
import com.senthink.ebike_administrer_tool.bean.dispatch.Dispatchout;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* @Description : 调车出库adapter
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/11
*/
public class DispatchOutAdapter extends RecyclerView.Adapter<DispatchOutAdapter.DispatchOutViewHolder> {
private Context mContext;
private List<Dispatchout> mList;
public DispatchOutAdapter(Context context, List<Dispatchout> outList) {
this.mContext = context;
this.mList = outList;
}
@Override
public DispatchOutViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.layout_dispatch_out_item,parent,false);
return new DispatchOutViewHolder(view) ;
}
@Override
public void onBindViewHolder(DispatchOutViewHolder holder, final int position) {
holder.mCarIdTv.setText(mList.get(position).getCarId());
holder.mParkIdTv.setText(mList.get(position).getParkId());
holder.mDeleteIv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mList.remove(position);
notifyItemRemoved(position);
if (position != mList.size()) {
notifyItemRangeChanged(position, mList.size() - position);
}
}
});
}
@Override
public int getItemCount() {
return mList.size();
}
class DispatchOutViewHolder extends RecyclerView.ViewHolder{
@BindView(R.id.tv_dispatch_out_carid)
TextView mCarIdTv;
@BindView(R.id.tv_parkid)
TextView mParkIdTv;
@BindView(R.id.iv_dispatch_out_delete)
ImageView mDeleteIv;
public DispatchOutViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
// public void setData(Dispatchout out){
// mList.add(out);
// notifyItemInserted(mList.size()-1);
// notifyItemChanged(mList.size()-1);
// }
//
public void setData(List<Dispatchout> out) {
this.mList = out;
notifyDataSetChanged();
}
}
......@@ -48,9 +48,9 @@ public class ApiManager {
public LoginApi loginApi;
public UserApi userApi;
private Object monitor = new Object();
// private static File httpCacheDirectory = new File(MyApplication.getContext().getCacheDir(), "zhihuCache");
// private static int cacheSize = 10 * 1024 * 1024; // 10 MiB
// private static Cache cache = new Cache(httpCacheDirectory, cacheSize);
private static File httpCacheDirectory = new File(MyApplication.getContext().getCacheDir(), "zhihuCache");
private static int cacheSize = 10 * 1024 * 1024; // 10 MiB
private static Cache cache = new Cache(httpCacheDirectory, cacheSize);
// 预请求的header信息
private static final class OptionsInterceptor implements Interceptor {
......@@ -75,8 +75,8 @@ public class ApiManager {
}
private static OkHttpClient client = new OkHttpClient.Builder() // client 中添加了以下属性
// .addNetworkInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)
// .addInterceptor(new LoginInterceptor())
.addNetworkInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)
.addInterceptor(new PostInterceptor())
.build();
private static OkHttpClient addTokenClient = new OkHttpClient.Builder()
.addNetworkInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)
......@@ -100,7 +100,7 @@ public class ApiManager {
loginApi = new Retrofit.Builder()
.baseUrl("http://10.200.2.109:9051/")
// .baseUrl("http://10.200.0.51:9051/auth")
// .client(client)
.client(client)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build().create(LoginApi.class);
......
package com.senthink.ebike_administrer_tool.bean.dispatch;
/**
* @Description :
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/12
*/
public class DispatchIn {
private String carId;
public String getCarId() {
return carId;
}
public void setCarId(String carId) {
this.carId = carId;
}
}
package com.senthink.ebike_administrer_tool.bean.dispatch;
/**
* @Description :
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/11
*/
public class Dispatchout {
private String carId;
private String parkId;
public String getCarId() {
return carId;
}
public String getParkId() {
return parkId;
}
public void setCarId(String carId) {
this.carId = carId;
}
public void setParkId(String parkId) {
this.parkId = parkId;
}
}
......@@ -2,13 +2,28 @@ package com.senthink.ebike_administrer_tool.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;
import com.senthink.ebike_administrer_tool.MainActivity;
import com.senthink.ebike_administrer_tool.R;
import org.w3c.dom.Text;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* @Description : 调度界面
* @Author : ni
......@@ -16,11 +31,86 @@ import com.senthink.ebike_administrer_tool.R;
* @Date : 2017/6/7
*/
public class DispatchFragment extends Fragment {
public class DispatchFragment extends Fragment implements View.OnClickListener{
private final int[] TAB_TITLES = new int[]{
R.string.dispatch_in,R.string.dispatch_out
};
private final Fragment[] TAB_FRAGMENT = new Fragment[] {
new DispatchOutFragment(),new DispatchInFragment()
};
private static final int COUNT = 2;
@BindView(R.id.vp_dispatch)
ViewPager mViewPager;
@BindView(R.id.rb_left)
RadioButton mLeftRb;
@BindView(R.id.rb_right)
RadioButton mRightRb;
private static final String TAG = DispatchFragment.class.getSimpleName();
private FragmentPagerAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_dispatch,container,false);
View view = inflater.inflate(R.layout.fragment_dispatch,container,false);
ButterKnife.bind(this,view);
initView();
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
adapter = new FragmentPagerAdapter(getChildFragmentManager()) {
@Override
public Fragment getItem(int position) {
return TAB_FRAGMENT[position];
}
@Override
public int getCount() {
return TAB_FRAGMENT.length;
}
};
mViewPager.setAdapter(adapter);
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Log.i(TAG, "onPageSelected: " + position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mViewPager.setCurrentItem(0);
}
private void initView() {
mLeftRb.setOnClickListener(this);
mRightRb.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.rb_left:
mViewPager.setCurrentItem(0);
break;
case R.id.rb_right:
mViewPager.setCurrentItem(1);
break;
}
}
}
package com.senthink.ebike_administrer_tool.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.senthink.ebike_administrer_tool.R;
import com.senthink.ebike_administrer_tool.adapter.DispatchInAdapter;
import com.senthink.ebike_administrer_tool.adapter.DispatchOutAdapter;
import com.senthink.ebike_administrer_tool.bean.dispatch.DispatchIn;
import com.senthink.ebike_administrer_tool.view.IDispatchFragment;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* @Description : 调入车辆
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/10
*/
public class DispatchInFragment extends Fragment implements IDispatchFragment{
private DispatchIn in = new DispatchIn();
private List<DispatchIn> mList = new ArrayList<>();
@BindView(R.id.recycleView_dispatch_in)
RecyclerView recyclerView;
private DispatchInAdapter mAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dispatch_in,container,false);
ButterKnife.bind(this,view);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
for (int i = 0;i<10;i++) {
in.setCarId("1234556");
mList.add(in);
}
LinearLayoutManager layout = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layout);
mAdapter = new DispatchInAdapter(getActivity(),mList);
recyclerView.setAdapter(mAdapter);
}
@Override
public void getInformationFailed(String msg) {
}
@Override
public void postInformationFailed(String msg) {
}
@Override
public void scan() {
}
@Override
public void updateInfo() {
}
@Override
public void submitSuccess() {
}
}
package com.senthink.ebike_administrer_tool.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.senthink.ebike_administrer_tool.R;
import com.senthink.ebike_administrer_tool.adapter.DispatchOutAdapter;
import com.senthink.ebike_administrer_tool.bean.dispatch.Dispatchout;
import com.senthink.ebike_administrer_tool.presenter.impl.DIspatchOutPresenterImpl;
import com.senthink.ebike_administrer_tool.view.IDispatchFragment;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* @Description : 调出车辆
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/10
*/
public class DispatchOutFragment extends Fragment implements IDispatchFragment {
@BindView(R.id.recycleView_dispatch_out)
RecyclerView recyclerView;
@BindView(R.id.btn_dispatch_out_scan)
Button scanBtn;
DispatchOutAdapter mAdapter;
DIspatchOutPresenterImpl presenter;
private Dispatchout out = new Dispatchout();
private List<Dispatchout> mList = new ArrayList<>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dispatch_out,container,false);
ButterKnife.bind(this,view);
for (int i = 0; i<10; i++) {
out.setCarId("11111111");
out.setParkId("00000000");
mList.add(out);
}
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initData();
scanBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scan();
}
});
}
private void initData() {
presenter = new DIspatchOutPresenterImpl(this);
presenter.getCarInfo();
LinearLayoutManager layout = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layout);
mAdapter = new DispatchOutAdapter(getActivity(),mList);
recyclerView.setAdapter(mAdapter);
}
@Override
public void getInformationFailed(String msg) {
}
@Override
public void postInformationFailed(String msg) {
}
@Override
public void scan() {
out.setParkId("123");
out.setCarId("3123");
mList.add(out);
// mAdapter.setData(mList);
mAdapter.notifyItemInserted(mList.size()-1);
mAdapter.notifyItemRangeChanged(mList.size()-1,mList.size()-1);
}
@Override
public void updateInfo() {
// TODO: 2017/6/12 获取数据
presenter.getCarInfo();
}
@Override
public void submitSuccess() {
}
}
package com.senthink.ebike_administrer_tool.model;
import com.senthink.ebike_administrer_tool.model.callback.dispatch.DispatchCallback;
/**
* @Description :
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/11
*/
public interface DIspatchOutModel {
void getCarInfo(DispatchCallback callback);
void submit(DispatchCallback callback);
}
package com.senthink.ebike_administrer_tool.model.callback.dispatch;
import com.senthink.ebike_administrer_tool.bean.userInfo.GetUserInfoById;
/**
* @Description : 调度的回调
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/12
*/
public interface DispatchCallback {
/** 获取信息成功 */
void getInfoSuccess();
/** 获取信息失败 */
void getInfoFailed(String msg);
/** 修改密码成功 */
void submitSuccess();
/** 修改密码失败 */
void submitFailed(String msg);
}
package com.senthink.ebike_administrer_tool.model.impl;
import com.senthink.ebike_administrer_tool.model.DIspatchOutModel;
import com.senthink.ebike_administrer_tool.model.callback.dispatch.DispatchCallback;
/**
* @Description :
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/11
*/
public class DispatchOutModelImpl extends BasePresenterImpl implements DIspatchOutModel {
@Override
public void getCarInfo(DispatchCallback callback) {
callback.getInfoSuccess();
}
@Override
public void submit(DispatchCallback callback) {
}
}
......@@ -10,6 +10,7 @@ import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpRequest;
import com.senthink.ebike_administrer_tool.MyApplication;
import com.senthink.ebike_administrer_tool.api.ApiManager;
import com.senthink.ebike_administrer_tool.api.LoginApi;
import com.senthink.ebike_administrer_tool.api.UserApi;
import com.senthink.ebike_administrer_tool.asynchttp.AsyncClient;
import com.senthink.ebike_administrer_tool.asynchttp.AsyncHttp;
......@@ -154,6 +155,7 @@ public class UserInfoModelImpl extends BasePresenterImpl implements UserInfoMode
e.printStackTrace();
}
http.PostHttpClient(url,bean.getToken(), mm,new HttpCallback() {
@Override
public void HttpCallbackResult(int code, JSONObject response) {
......
package com.senthink.ebike_administrer_tool.presenter;
/**
* @Description :
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/11
*/
public interface DIspatchOutPresenter {
// 获取车辆信息
void getCarInfo();
// 提交信息
void submit();
}
package com.senthink.ebike_administrer_tool.presenter.impl;
import com.senthink.ebike_administrer_tool.model.callback.dispatch.DispatchCallback;
import com.senthink.ebike_administrer_tool.model.impl.DispatchOutModelImpl;
import com.senthink.ebike_administrer_tool.presenter.DIspatchOutPresenter;
import com.senthink.ebike_administrer_tool.view.IDispatchFragment;
/**
* @Description :
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/11
*/
public class DIspatchOutPresenterImpl implements DIspatchOutPresenter {
private DispatchOutModelImpl userInfoModel;
private IDispatchFragment fragment;
public DIspatchOutPresenterImpl(IDispatchFragment fragmet) {
this.fragment = fragmet;
userInfoModel = new DispatchOutModelImpl();
}
@Override
public void getCarInfo() {
userInfoModel.getCarInfo(new DispatchCallback() {
@Override
public void getInfoSuccess() {
fragment.updateInfo();
}
@Override
public void getInfoFailed(String msg) {
fragment.getInformationFailed(msg);
}
@Override
public void submitSuccess() {
fragment.submitSuccess();
}
@Override
public void submitFailed(String msg) {
fragment.postInformationFailed(msg);
}
});
}
@Override
public void submit() {
userInfoModel.submit(new DispatchCallback() {
@Override
public void getInfoSuccess() {
}
@Override
public void getInfoFailed(String msg) {
}
@Override
public void submitSuccess() {
}
@Override
public void submitFailed(String msg) {
}
});
}
}
package com.senthink.ebike_administrer_tool.view;
/**
* @Description : 调度界面的接口
* @Author : ni
* @Email : lifengni2015@gmail.com
* @Date : 2017/6/11
*/
public interface IDispatchFragment extends IBaseFragment {
// 更新信息
void updateInfo();
// 提交成功
void submitSuccess();
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp"/>
<padding android:left="5dp"/>
<stroke android:width="1dp"
android:color="@color/tab_tv_normal"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:drawable="@color/tab_background_normal"/>
<item android:state_selected="true" android:drawable="@color/tab_background_selected"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:color="@color/tab_tv_normal"/>
<item android:state_checked="true" android:color="@color/tab_tv_selected"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:bottomLeftRadius="@dimen/switch_button_corners_radius"
android:bottomRightRadius="@dimen/switch_button_corners_radius"
android:topLeftRadius="@dimen/switch_button_corners_radius"
android:topRightRadius="@dimen/switch_button_corners_radius"/>
<padding android:left="5dp"/>
<stroke android:width="@dimen/stroke_width"
android:color="@color/background_color_white"/>
<!--<solid android:color="@color/tab_background_normal"/>-->
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp"/>
<solid android:color="#ffffff"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:bottomLeftRadius="@dimen/switch_button_corners_radius"
android:topLeftRadius="@dimen/switch_button_corners_radius"/>
<solid android:color="@color/tab_background_selected"/>
<stroke android:width="@dimen/stroke_width" android:color="@color/tab_tv_normal"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/switch_button_left_checked">
</item>
<item android:state_checked="false"
android:drawable="@drawable/switch_button_left_unchecked">
</item>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:bottomLeftRadius="@dimen/switch_button_corners_radius"
android:topLeftRadius="@dimen/switch_button_corners_radius"/>
<stroke android:width="@dimen/stroke_width" android:color="@color/tab_tv_normal"/>
<solid android:color="@color/tab_background_normal"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:bottomRightRadius="@dimen/switch_button_corners_radius"
android:topRightRadius="@dimen/switch_button_corners_radius"/>
<stroke android:width="@dimen/stroke_width" android:color="@color/tab_tv_normal"/>
<solid android:color="@color/tab_background_selected"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/switch_button_right_checked">
</item>
<item android:state_checked="false"
android:drawable="@drawable/switch_button_right_unchecked">
</item>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:bottomRightRadius="@dimen/switch_button_corners_radius"
android:topRightRadius="@dimen/switch_button_corners_radius"/>
<stroke android:width="@dimen/stroke_width" android:color="@color/tab_tv_normal"/>
<solid android:color="@color/tab_background_normal"/>
</shape>
\ No newline at end of file
......@@ -2,8 +2,50 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
<LinearLayout
android:paddingTop="15dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="45dp"
android:orientation="horizontal"
android:layout_centerInParent="true">
<RadioButton
android:gravity="center"
android:id="@+id/rb_left"
android:layout_width="180dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="hello world"/>
android:button="@null"
android:checked="true"
android:text="@string/dispatch_out"
android:textColor="@drawable/dispatch_text_selector"
android:background="@drawable/switch_button_left_selector"/>
<RadioButton
android:id="@+id/rb_right"
android:layout_width="180dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:background="@drawable/switch_button_right_selector"
android:button="@null"
android:gravity="center"
android:text="@string/dispatch_in"
android:textColor="@drawable/dispatch_text_selector" />
</RadioGroup>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp_dispatch"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v4.view.ViewPager>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp">
<EditText
android:id="@+id/et_input_parkname"
android:hint="@string/input_park_name"
android:textSize="@dimen/small_text"
android:layout_width="match_parent"
android:layout_height="37dp"
android:background="@drawable/modify_input_frame" />
<RelativeLayout
android:id="@+id/rl_text"
android:paddingTop="10dp"
android:layout_below="@+id/et_input_parkname"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_eding"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/tab_tv_normal"
android:textSize="@dimen/toolbar_submit_size"
android:text="@string/limit_car_num"/>
<TextView
android:id="@+id/tv_limit_num"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/tv_eding"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/toolbar_submit_size"
android:textColor="@color/tab_tv_normal"
android:text="10"
/>
<TextView
android:layout_marginLeft="60dp"
android:layout_toRightOf="@+id/tv_limit_num"
android:id="@+id/tv_max_car"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/toolbar_submit_size"
android:textColor="@color/tab_tv_normal"
android:text="@string/max_car_num"/>
<TextView
android:layout_toRightOf="@+id/tv_max_car"
android:id="@+id/tv_max_num"
android:layout_marginLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/toolbar_submit_size"
android:textColor="@color/tab_tv_normal"
android:text="12"/>
</RelativeLayout>
<!--<FrameLayout-->
<!---->
<!--android:paddingTop="10dp"-->
<!--android:background="@drawable/recyclerview"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content">-->
<android.support.v7.widget.RecyclerView
android:layout_below="@+id/rl_text"
android:layout_marginTop="10dp"
android:id="@+id/recycleView_dispatch_in"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
<!--</FrameLayout>-->
<Button
android:layout_centerInParent="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="10dp"
android:id="@+id/btn_dispatch_in_scan"
android:layout_width="319dp"
android:layout_height="wrap_content"
android:background="@drawable/login_btn"
android:textColor="@color/black"
android:text="@string/scan_to_dispatch_in" />
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp">
<LinearLayout
android:id="@+id/ll_text"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="共"/>
<TextView
android:id="@+id/tv_dispatch_out_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="10"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="辆"/>
</LinearLayout>
<!--<FrameLayout-->
<!--android:layout_below="@+id/ll_text"-->
<!--android:paddingTop="10dp"-->
<!--android:background="@drawable/recyclerview"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content">-->
<android.support.v7.widget.RecyclerView
android:layout_below="@+id/ll_text"
android:id="@+id/recycleView_dispatch_out"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
<!--</FrameLayout>-->
<Button
android:layout_centerInParent="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="10dp"
android:id="@+id/btn_dispatch_out_scan"
android:layout_width="319dp"
android:layout_height="wrap_content"
android:background="@drawable/login_btn"
android:textColor="@color/black"
android:text="@string/scan_to_dispatch_out" />
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="70dp"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<RelativeLayout
android:layout_marginTop="15dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_car_id"
android:text="@string/carId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/login_text_size"
android:textColor="@color/tab_tv_normal"/>
<TextView
android:layout_toRightOf="@+id/tv_car_id"
android:id="@+id/tv_dispatch_in_car_id"
android:layout_marginLeft="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/login_text_size"
android:textColor="@color/tab_tv_normal"
android:text="1025120561"/>
<ImageView
android:layout_alignParentRight="true"
android:id="@+id/iv_dispatch_in_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_shanchu"/>
</RelativeLayout>
<View
android:layout_alignParentBottom="true"
android:id="@+id/dispatch_in_line"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/dispatch_park"/>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<LinearLayout
android:id="@+id/ly_car_id"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/carId"
android:textSize="@dimen/login_text_size"
android:textColor="@color/tab_tv_normal"/>
<TextView
android:layout_marginLeft="10dp"
android:id="@+id/tv_dispatch_out_carid"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="@dimen/login_text_size"
android:textColor="@color/tab_tv_normal"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/ly_park_id"
android:layout_below="@+id/ly_car_id"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/parkId"
android:textSize="@dimen/login_text_size"
android:textColor="@color/dispatch_park"/>
<TextView
android:layout_marginLeft="10dp"
android:id="@+id/tv_parkid"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="@dimen/login_text_size"
android:textColor="@color/dispatch_park"
/>
</LinearLayout>
<ImageView
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:id="@+id/iv_dispatch_out_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_shanchu"/>
<View
android:id="@+id/line"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/ly_park_id"
android:background="@color/dispatch_park"
/>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/main_toolbar"
android:elevation="3dp"
android:background="@color/tab_tv_normal"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:paddingLeft="20dp"
android:paddingRight="20dp"
>
<!--<ImageView-->
<!--android:id="@+id/iv_dispatch_back"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="left"-->
<!--android:src="@drawable/icon_fh"-->
<!--/>-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:textColor="@color/login_text_color"
android:textSize="@dimen/title_text_size"
android:text="@string/app_name"/>
<TextView
android:id="@+id/tv_extra_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="right"
android:textColor="@color/login_text_color"
android:textSize="@dimen/toolbar_submit_size" />
</android.support.v7.widget.Toolbar>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
></android.support.v4.view.ViewPager>
android:layout_weight="1"></android.support.v4.view.ViewPager>
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/tab_tv_normal</item>
<item name="colorPrimaryDark">@color/tab_tv_normal</item>
</style>
<style parent="@android:style/Theme.Material.Dialog.Alert" name="modify_psw_success_dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
......
......@@ -15,4 +15,5 @@
<color name="tab_background_selected">#252e41</color>
<color name="background_color_grey">#f1f1f1</color>
<color name="background_color_white">#e2e2e2</color>
<color name="dispatch_park">#ACACAD</color>
</resources>
......@@ -5,4 +5,9 @@
<dimen name="login_text_size">20sp</dimen>
<dimen name="tab_height">60dp</dimen>
<dimen name="small_text">20sp</dimen>
<dimen name="title_text_size">25sp</dimen>
<dimen name="toolbar_submit_size">15sp</dimen>
<dimen name="dispatch_button_height">40dp</dimen>
<dimen name="switch_button_corners_radius">5dp</dimen>
<dimen name="stroke_width">1dp</dimen>
</resources>
\ No newline at end of file
<resources>
<string name="app_name">EBike-Administrer-Tool</string>
<string name="app_name">晒骑运维</string>
<string name="action_sign_in">登陆</string>
<string name="replace_battery">更换电池</string>
<string name="safeguard">维护</string>
......@@ -18,4 +18,16 @@
<string name="confirm_psw">再次输入</string>
<string name="psw_not_same">密码不一致,请重新输入</string>
<string name="modify_password_success">密码修改成功,请重新登录</string>
<string name="submit">提交</string>
<string name="list">列表</string>
<string name="logout">登出</string>
<string name="dispatch_out">调出停车点</string>
<string name="dispatch_in">调入停车点</string>
<string name="scan_to_dispatch_in">扫一扫调入车辆</string>
<string name="scan_to_dispatch_out">扫一扫调出车辆</string>
<string name="carId">车辆编号:</string>
<string name="parkId">停车点编号:</string>
<string name="input_park_name">输入站点名称</string>
<string name="limit_car_num">额定车位数:</string>
<string name="max_car_num">最多停车数:</string>
</resources>
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--底部导航栏状态变化-->
<style name="CustomTab" parent="Widget.Design.TabLayout" >
<item name="tabIndicatorColor">@color/tab_indicator</item>
<item name="tabTextColor">@color/tab_tv_normal</item>
......@@ -16,6 +17,16 @@
<item name="tabIndicatorHeight">0dp</item>
</style>
<!--调入调出导航栏状态变化-->
<style name="DispatchTab" parent="Widget.Design.TabLayout">
<item name="tabIndicatorColor">@color/tab_indicator</item>
<item name="tabTextColor">@color/tab_tv_normal</item>
<item name="tabSelectedTextColor">@color/login_text_color</item>
<item name="tabBackground">@drawable/dispatch_selector</item>
<item name="tabIndicatorHeight">0dp</item>
</style>
<!--修改密码提示框-->
<style parent="@android:style/Theme.Dialog" name="modify_psw_dialog">
<item name="android:windowBackground">@android:color/transparent</item>
......@@ -32,4 +43,5 @@
<item name="android:windowFrame">@null</item>
</style>
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment