2016.09.18-09.23
来源:互联网 发布:数据铁笼文献 编辑:程序博客网 时间:2024/06/16 11:39
2016.9.20
1.访客预约的设计完成
思路:
(1)界面依据需求设计 VisitorActivity
(2)选择时间功能的时间
(3)下一步:二维码生成(包含信息:卡ID,开始时间,结束时间)
【具体解决】
(1)界面设计
...常用 <LinearLayout> <RelativeLayout>来共同完成
固定边框或图标可用xml文件布置,在空间中用background调用
<LinearLayout
android:layout_width="@dimen/activity_layout_width"
android:layout_height="@dimen/activity_layout_height"
android:layout_marginTop="10dp"
android:layout_marginLeft="60dp"
android:background="@drawable/corners_bg" >
drawable/corners_bg文件如下
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<stroke android:color="@color/frame_color" android:width="2px"/> //宽度大小
<corners android:topLeftRadius="5dp"
android:topRightRadius="5dp"
android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"/>
</shape>
Button风格也可由资源文件配置
<Button
android:id="@+id/bt_next"
style="@style/ButtonStyle1"
android:layout_gravity="center_horizontal"
android:layout_marginTop="150dp"
android:text="@string/visitor_next" />
style="@style/ButtonStyle1"文件如下:
<style name="ButtonStyle1">
<item name="android:background">@drawable/selector_bg_btn_1</item>
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">@dimen/button1_textSize</item>
<item name="android:gravity">center</item>
<item name="android:layout_width">@dimen/button1_defaultWidth</item>
<item name="android:layout_height">@dimen/button1_defaultHeight</item>
</style>
drawable/selector_bg_btn_1文件如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_bg_btn_1_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/shape_bg_btn_1_disabled" android:state_enabled="false"/>
<item android:drawable="@drawable/shape_bg_btn_1_default"/>
</selector>
drawable/shape_bg_btn_1_pressed" android:state_pressed="true文件如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- 填充的颜色 -->
<solid android:color="@color/button1_bg_pressed" />
<!-- 设置按钮的四个角为弧形 -->
<!-- android:radius 弧形的半径 -->
<corners android:radius="@dimen/button1_radius" />
<!-- padding:Button里面的文字与Button边界的间隔 -->
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</shape>
【标题边框】
设置个性标题边框,无需将原有的边框隐藏,就可覆盖原有的边框
public class VisitorActivity extends AppBaseActivity{
}
VisitorActivity 继承一个原有的类AppBaseActivity
原有类中提供了固定标题栏
在AndroidManifest.xml 文件中添加 android:label="@string/VisitorOrder" 新标题即可完成一个自定义的标题边框
public abstract class AppBaseActivity extends BaseActivity {
protected LinearLayout llActionbarRight;
protected TextView tvTitle;
protected Button btnBack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getActionBar();
if (actionBar != null) {
actionBar.setDisplayShowCustomEnabled(true);
// actionBar.setDisplayShowTitleEnabled(false);
// actionBar.setDisplayShowHomeEnabled(false);
actionBar.setCustomView(R.layout.ui_actionbar);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
btnBack = (Button) actionBar.getCustomView().findViewById(R.id.actionbar_back_button);
tvTitle = (TextView) actionBar.getCustomView().findViewById(R.id.actionbar_title_textview);
llActionbarRight = (LinearLayout) actionBar.getCustomView().findViewById(R.id.ll_actionbar_right);
tvTitle.setText(getTitle());
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
}
@Override
public void setTitle(int titleId) {
super.setTitle(titleId);
tvTitle.setText(titleId);
}
@Override
public void setTitle(CharSequence title) {
super.setTitle(title);
tvTitle.setText(title);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
protected boolean onPreInvoke() {
if (!NetworkUtils.isNetworkConnected()) {
Toast.makeText(AppBaseActivity.this, R.string.noNetworkConnect, Toast.LENGTH_SHORT).show();
return false;
} else {
return true;
}
}
protected boolean needCallback;
protected ProgressDialog mProgressDialog;
protected abstract class AbstractRequestCallback implements RequestCallback {
@Override
public abstract void onSuccess(String content);
@Override
public void onFail(int code) {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
mProgressDialog = null;
}
String errMsg = "";
switch (code) {
case HttpRequest.EXCEPTION_CODE_NOT_FROM_SERVER:
errMsg = "连接服务器失败";
break;
default:
errMsg = "获取数据失败. error code " + code;
break;
}
new AlertDialog.Builder(AppBaseActivity.this)
.setTitle(R.string.tip)
.setMessage(errMsg)
.setPositiveButton(R.string.confirm, null)
.show();
}
@Override
public void onCookieExpired() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
mProgressDialog = null;
}
new AlertDialog.Builder(AppBaseActivity.this)
.setTitle(R.string.tip)
.setMessage("Cookie过期,请重新登录")
.setPositiveButton(R.string.confirm,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
Class clazz = Class.forName("com.leelen.account.activity.LoginActivity");
if (clazz != null) {
Intent intent = new Intent(AppBaseActivity.this, clazz);
intent.putExtra(LeelenConst.NEED_CALLBACK, true);
startActivity(intent);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
})
.show();
}
}
}
/*
*BaseActivity
*/
public abstract class BaseActivity extends Activity {
protected Context mContext;
protected Resources mResources;
/**
* 请求列表管理器
*/
protected RequestManager requestManager = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
mContext = this;
mResources = mContext.getResources();
requestManager = new RequestManager();
super.onCreate(savedInstanceState);
initVariables();
initViews(savedInstanceState);
loadData();
}
protected abstract void initVariables();
protected abstract void initViews(Bundle savedInstanceState);
protected abstract void loadData();
@Override
protected void onDestroy() {
/**
* 在activity销毁的时候同时设置停止请求,停止线程请求回调
*/
if (requestManager != null) {
requestManager.cancelRequest();
}
super.onDestroy();
}
@Override
protected void onPause() {
/**
* 在activity停止的时候同时设置停止请求,停止线程请求回调
*/
if (requestManager != null) {
requestManager.cancelRequest();
}
super.onPause();
}
public RequestManager getRequestManager() {
return requestManager;
}
}
- 2016.09.18-09.23
- 周报2016.09.12-2016.09.18(初识weblogic)
- python编码 2016.09.18回顾
- 2016.09.05-2016.09.11
- 2016.09.01
- 2016.09.09
- 2016.09.26
- 2016.09.01回顾
- 2016.09.06回顾
- 2016.09.07回顾
- 2016.09.08回顾
- 2016.09.09回顾
- 2016.09.12回顾
- 2016.09.13回顾
- 2016.09.16日志
- 2016.09.14回顾
- 2016.09.19回顾
- 2016.09.20回顾
- Effective BCB Form Program(2) ――窗体事件驱动链引发程序错误.
- 【DoTween】Unity插件DOTween教程(三)
- Appium 结合 SafariLuancher曲线救国启动IOS(真机) 自带Safari浏览器做自动化测试.
- 毕业两年,路呢?
- 查看mysql连接数
- 2016.09.18-09.23
- Roman to Integer(罗马数字转换为整数)
- JAVA 配置解压版tomcat成为系统服务
- Tyvj1870 [NOIP1998P2]阶乘和
- Netty 之 TCP粘包拆包基本解决方案
- Swift Bool
- 详细介绍springData
- Lua 中实现 protobuf 序列化,反序列化
- 一些小结