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















0 0
原创粉丝点击