Selaa lähdekoodia

Apex Mobile
完成container search 界面

Ray Zhang 8 vuotta sitten
vanhempi
commit
46df2d8257

+ 31 - 5
Apex Mobile/app/src/main/java/com/usai/apex/ContainerSearchActivity.java

@@ -8,10 +8,13 @@ import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
-import android.widget.TextView;
+import android.widget.Toast;
 
 public class ContainerSearchActivity extends AppCompatActivity {
 
+
+    private SegmentView mSegmentView;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -22,15 +25,38 @@ public class ContainerSearchActivity extends AppCompatActivity {
 
     private void setCustomActionBar() {
         ActionBar.LayoutParams lp =new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT, Gravity.CENTER);
-        View mActionBarView = LayoutInflater.from(this).inflate(R.layout.actionbar_customtitle, null);
+        View mActionBarVie = LayoutInflater.from(this).inflate(R.layout.actionbar_segmentview, null);
+
+
+        mSegmentView = mActionBarVie.findViewById(R.id.segmentview);
+
+
+        mSegmentView.setOnSegmentViewClickListener(new SegmentView.onSegmentViewClickListener() {
+            @Override
+            public void onSegmentViewClick(View view, int postion) {
+                switch (postion) {
+                    case 0:
+                        Toast.makeText(ContainerSearchActivity.this, "点击了消息" + postion,
+                                Toast.LENGTH_SHORT).show();
+                        break;
+                    case 1:
+                        Toast.makeText(ContainerSearchActivity.this, "点击了电话" + postion,
+                                Toast.LENGTH_SHORT).show();
+                        break;
+                    default:
+                        break;
+                }
+            }
+        });
+
 
-        TextView titleview = mActionBarView.findViewById(R.id.title);
-        titleview.setText(getIntent().getStringExtra("title"));
+//        TextView titleview = mActionBarView.findViewById(R.id.title);
+//        titleview.setText(getIntent().getStringExtra("title"));
 //
 //        mActionBarView.setBackgroundColor(Color.YELLOW);
 //        titleview.setBackgroundColor(Color.BLUE);
         ActionBar actionBar = getSupportActionBar();
-        actionBar.setCustomView(mActionBarView, lp);
+        actionBar.setCustomView(mActionBarVie, lp);
         actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
         actionBar.setDisplayShowCustomEnabled(true);
         actionBar.setDisplayHomeAsUpEnabled(true);

+ 159 - 0
Apex Mobile/app/src/main/java/com/usai/apex/SegmentView.java

@@ -0,0 +1,159 @@
+package com.usai.apex;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+/**
+ * Created by ray on 26/02/2018.
+ */
+
+public class SegmentView extends LinearLayout {
+    private TextView leftTextView;
+    private TextView rightTextView;
+    private onSegmentViewClickListener segmentListener;
+
+    // 这是代码加载ui必须重写的方法
+    public SegmentView(Context context) {
+        super(context);
+        initView();
+    }
+
+    // 这是在xml布局使用必须重写的方法
+    public SegmentView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        initView();
+    }
+
+    private void initView() {
+        leftTextView = new TextView(getContext());
+        rightTextView = new TextView(getContext());
+
+        leftTextView.setSingleLine();
+        rightTextView.setSingleLine();
+
+//        leftTextView.setPadding(8,0,8,0);
+//        rightTextView.setPadding(8,0,8,0);
+
+        // 设置textview的布局宽高并设置为weight属性都为1
+        leftTextView.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1));
+        rightTextView.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1));
+
+        // 初始化的默认文字
+        leftTextView.setText("H BOL");
+        rightTextView.setText("Container#");
+
+        // 实现不同的按钮状态,不同的颜色
+        ColorStateList csl = getResources().getColorStateList(R.color.segment_text_color_select);
+        leftTextView.setTextColor(csl);
+        rightTextView.setTextColor(csl);
+
+        // 设置textview的内容位置居中
+        leftTextView.setGravity(Gravity.CENTER);
+        rightTextView.setGravity(Gravity.CENTER);
+
+        // 设置textview的内边距
+        leftTextView.setPadding(20, 10, 20, 10);
+        rightTextView.setPadding(20, 10, 20, 10);
+
+        // 设置文字大小
+        setSegmentTextSize(17);
+
+        // 设置背景资源
+        leftTextView.setBackgroundResource(R.drawable.segment_left_background);
+        rightTextView.setBackgroundResource(R.drawable.segment_right_background);
+
+        // 默认左侧textview为选中状态
+        leftTextView.setSelected(true);
+
+        // 加入textview
+        this.removeAllViews();
+        this.addView(leftTextView);
+        this.addView(rightTextView);
+        this.invalidate();//重新draw()
+
+        leftTextView.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (leftTextView.isSelected()) {
+                    return;
+                }
+                leftTextView.setSelected(true);
+                rightTextView.setSelected(false);
+                if (segmentListener != null) {
+                    segmentListener.onSegmentViewClick(leftTextView, 0);
+                }
+            }
+        });
+
+        rightTextView.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (rightTextView.isSelected()) {
+                    return;
+                }
+                rightTextView.setSelected(true);
+                leftTextView.setSelected(false);
+                if (segmentListener != null) {
+                    segmentListener.onSegmentViewClick(rightTextView, 1);
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 设置字体大小
+     *
+     * @param dp
+     */
+    private void setSegmentTextSize(int dp) {
+        leftTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, dp);
+        rightTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, dp);
+    }
+
+    /**
+     * 手动设置选中的状态
+     *
+     * @param i
+     */
+    public void setSelect(int i) {
+        if (i == 0) {
+            leftTextView.setSelected(true);
+            rightTextView.setSelected(false);
+        } else {
+            leftTextView.setSelected(false);
+            rightTextView.setSelected(true);
+        }
+    }
+
+    /**
+     * 设置控件显示的文字
+     *
+     * @param text
+     * @param position
+     */
+    public void setSegmentText(CharSequence text, int position) {
+        if (position == 0) {
+            leftTextView.setText(text);
+        }
+        if (position == 1) {
+            rightTextView.setText(text);
+        }
+    }
+
+    // 定义一个接口接收点击事件
+    public interface onSegmentViewClickListener {
+        public void onSegmentViewClick(View view, int postion);
+    }
+
+    public void setOnSegmentViewClickListener(onSegmentViewClickListener segmentListener) {
+        this.segmentListener = segmentListener;
+    }
+
+}

+ 14 - 0
Apex Mobile/app/src/main/res/color/segment_text_color_select.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item
+        android:state_selected="true"
+        android:color="#ffffff">
+    </item>
+
+    <item
+        android:color="@color/icon_gray">
+    </item>
+
+</selector>

+ 28 - 0
Apex Mobile/app/src/main/res/drawable/segment_left_background.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_selected="true">
+        <shape>
+            <solid android:color="@color/icon_gray" />
+
+            <corners
+                android:bottomLeftRadius="15dp"
+                android:bottomRightRadius="0dp"
+                android:topLeftRadius="15dp"
+                android:topRightRadius="0dp" />
+        </shape>
+    </item>
+
+    <item>
+        <shape>
+            <stroke android:width="1dp" android:color="@color/icon_gray" />
+            <solid android:color="#ffffff" />
+            <corners android:bottomLeftRadius="15dp"
+                android:bottomRightRadius="0dp"
+                android:topLeftRadius="15dp"
+                android:topRightRadius="0dp" />
+        </shape>
+    </item>
+
+</selector>

+ 28 - 0
Apex Mobile/app/src/main/res/drawable/segment_right_background.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_selected="true">
+        <shape>
+            <solid android:color="@color/icon_gray" />
+
+            <corners
+                android:bottomLeftRadius="0dp"
+                android:bottomRightRadius="15dp"
+                android:topLeftRadius="0dp"
+                android:topRightRadius="15dp" />
+        </shape>
+    </item>
+
+    <item>
+        <shape>
+            <stroke android:width="1dp" android:color="@color/icon_gray" />
+            <solid android:color="#ffffff" />
+            <corners
+                android:bottomLeftRadius="0dp"
+                android:bottomRightRadius="15dp"
+                android:topLeftRadius="0dp"
+                android:topRightRadius="15dp" />
+        </shape>
+    </item>
+
+</selector>

+ 1 - 1
Apex Mobile/app/src/main/res/layout/actionbar_customtitle.xml

@@ -13,7 +13,7 @@
 
         android:gravity="center"
         android:textColor="@color/icon_gray"
-        android:textSize="17dp"
+        android:textSize="17sp"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="0.6"

+ 21 - 0
Apex Mobile/app/src/main/res/layout/actionbar_segmentview.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+
+    <com.usai.apex.SegmentView
+        android:id="@+id/segmentview"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:paddingLeft="50dp"
+        android:paddingRight="50dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"></com.usai.apex.SegmentView>
+
+</android.support.constraint.ConstraintLayout>

+ 1 - 0
Apex Mobile/app/src/main/res/values/colors.xml

@@ -10,4 +10,5 @@
     <color name="icon_red">#b22123</color>
     <color name="icon_gray">#444445</color>
     <color name="table_bg">#efeff4</color>
+
 </resources>