liuzhenxing1118 hai 5 meses
pai
achega
2fd96d904d

+ 0 - 9
.idea/misc.xml

@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
-    <output url="file://$PROJECT_DIR$/build/classes" />
-  </component>
-  <component name="ProjectType">
-    <option name="id" value="Android" />
-  </component>
-</project>

+ 64 - 73
app/src/main/java/com/sikey/skcontact/activity/BaseActivity.java

@@ -1,73 +1,64 @@
-package com.sikey.skcontact.activity;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-import android.widget.Toast;
-import androidx.annotation.Nullable;
-import com.sikey.skcontact.utils.Macros;
-
-public class BaseActivity extends Activity {
-    public String TAG = "losion / skcontact :" +  getClass().getSimpleName();
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        Log.d(TAG, "onCreate: ");
-
-        if (Macros.DEBUG_FULLSCREEN) {
-            setFullView();
-            setHardKey();
-        }
-
-        onCreateBase();
-        initDataBase();
-        initViewBase();
-    }
-
-    @Override
-    protected void onStart() {
-        super.onStart();
-        onStartBase();
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        onDestroyBase();
-    }
-
-    protected void onCreateBase() { }
-    protected void onStartBase() { }
-    protected void initDataBase() { }
-    protected void initViewBase() { }
-    protected void onDestroyBase() { }
-
-    private void setFullView() {
-        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
-        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
-    }
-
-    private void setHardKey() {
-        View decorView = getWindow().getDecorView();
-        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
-                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
-        decorView.setSystemUiVisibility(uiOptions);
-    }
-
-    public void changeStatusBar(boolean isShow) {
-        if (isShow) {
-            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
-        } else {
-            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
-        }
-    }
-
-    public void toast(String content) {
-        Toast t = Toast.makeText(this, content, Toast.LENGTH_SHORT);
-        t.show();
-    }
-}
+package com.sikey.skcontact.activity;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.sikey.skcontact.R;
+import com.sikey.skcontact.model.BaseModel;
+import com.sikey.skcontact.utils.Constant;
+import com.sikey.skcontact.utils.Macros;
+import com.sikey.skcontact.utils.ResUtils;
+import com.sikey.skcontact.adapter.BaseListAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class BaseActivity extends Activity {
+    public String TAG = "losion / xpsettings :" + getClass().getSimpleName();
+    public TextView title;
+    public BaseListAdapter mAdapter = null;
+    public List<BaseModel> mDataList = new ArrayList<>();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        ResUtils.initResUtils(this, Constant.PACKAGE_NAME);
+
+        if (Macros.DEBUG_FULLSCREEN) {
+            setFullView();
+            setHardKey();
+        }
+    }
+
+    void setWatchTitle(String titleStr) {
+        title = findViewById(R.id.title);
+        if (title != null) {
+            title.setText(titleStr);
+            title.setVisibility(View.VISIBLE);
+        }
+    }
+
+    private void setFullView() {
+        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+    }
+
+    private void setHardKey() {
+        View decorView = getWindow().getDecorView();
+        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
+        decorView.setSystemUiVisibility(uiOptions);
+    }
+
+    public void toast(String content) {
+        Toast t = Toast.makeText(this, content, Toast.LENGTH_SHORT);
+        t.show();
+    }
+}

+ 36 - 1
app/src/main/java/com/sikey/skcontact/activity/ContactActivity.java

@@ -1,9 +1,18 @@
 package com.sikey.skcontact.activity;
 
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
 import android.os.Bundle;
 import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
 
 import com.sikey.skcontact.R;
+import com.sikey.skcontact.adapter.BaseListAdapter;
+import com.sikey.skcontact.model.BaseModel;
+import com.sikey.skcontact.utils.Constant;
+import com.sikey.skcontact.utils.ResUtils;
 
 public class ContactActivity extends BaseActivity {
     public final String TAG = "losion / skcontact :" + getClass().getSimpleName();
@@ -12,6 +21,32 @@ public class ContactActivity extends BaseActivity {
     protected void onCreate(Bundle savedInstanceState) {
         Log.d(TAG, "onCreate: ");
         super.onCreate(savedInstanceState);
-        //setContentView(R.layout.activity_main);
+        setContentView(R.layout.activity_list_title);
+        initData();
+        initView();
+    }
+
+    private void initData() {
+        String[] stringList = {"阿凡达范德萨", "aaa"};
+        for (int i = 0; i < stringList.length; i++) {
+            BaseModel model = new BaseModel();
+            model.title = stringList[i].trim();
+            model.cellType = Constant.CellType.TITLE_SUBTITLE;
+            mDataList.add(model);
+        }
+    }
+
+    private void initView() {
+        mAdapter = new BaseListAdapter(this, 0, mDataList);
+        ListView listView = findViewById(R.id.activity_listview);
+        listView.setAdapter(mAdapter);
+        listView.setDivider(new ColorDrawable(Color.TRANSPARENT));
+        listView.setDividerHeight(0);
+        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+
+            }
+        });
     }
 }

+ 100 - 0
app/src/main/java/com/sikey/skcontact/adapter/BaseListAdapter.java

@@ -0,0 +1,100 @@
+package com.sikey.skcontact.adapter;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.text.Editable;
+import android.text.InputFilter;
+import android.text.TextWatcher;
+import android.view.ActionMode;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.Switch;
+import android.widget.TextView;
+
+import com.sikey.skcontact.R;
+import com.sikey.skcontact.model.BaseModel;
+import com.sikey.skcontact.utils.Constant;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BaseListAdapter extends ArrayAdapter<BaseModel> {
+    private Context mContext = null;
+    private Handler mHandler = null;
+    List<BaseModel> mBaseObjects = new ArrayList<>();
+
+    public BaseListAdapter(Context context, int textViewResourceId, List objects) {
+        super(context, textViewResourceId, objects);
+        mContext = context;
+        mBaseObjects = objects;
+    }
+
+    public BaseListAdapter(Context context, int textViewResourceId, List objects, Handler handler) {
+        super(context, textViewResourceId, objects);
+        mContext = context;
+        mBaseObjects = objects;
+        mHandler = handler;
+    }
+
+    @SuppressLint({"InflateParams", "ClickableViewAccessibility"})
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        BaseModel model = mBaseObjects.get(position);
+
+        View view = null;
+        if (model.cellType == Constant.CellType.TITLE) {
+            view = LayoutInflater.from(getContext()).inflate(R.layout.item_title, null);
+        } else if (model.cellType == Constant.CellType.TITLE_SUBTITLE) {
+            view = LayoutInflater.from(getContext()).inflate(R.layout.item_title_subtitle, null);
+        } else if (model.cellType == Constant.CellType.ICON_TITLE) {
+            view = LayoutInflater.from(getContext()).inflate(R.layout.item_icon_title, null);
+        } else if (model.cellType == Constant.CellType.ICON_TITLE_SUBTITLE) {
+            view = LayoutInflater.from(getContext()).inflate(R.layout.item_icon_title_subtitle, null);
+        } else if (model.cellType == Constant.CellType.GONE) {
+            view = LayoutInflater.from(getContext()).inflate(R.layout.item_gone, null);
+        }
+
+        assert view != null;
+        TextView itemTitle = view.findViewById(R.id.item_title);
+        TextView itemSubTitle = view.findViewById(R.id.item_subtitle);
+        ImageView itemIcon = view.findViewById(R.id.item_icon);
+        ImageView itemArrow = view.findViewById(R.id.item_arrow);
+
+        if (itemTitle != null) {
+            itemTitle.setText(model.title);
+            if (model.isOn && model.titileColor != 0) {
+                itemTitle.setTextColor(getContext().getColor(model.titileColor));
+            }
+        }
+        if (itemSubTitle != null) {
+            itemSubTitle.setText(model.subTitle);
+            if (model.subColor != 0) {
+                itemSubTitle.setTextColor(getContext().getColor(model.subColor));
+            }
+        }
+
+        if (itemIcon != null) {
+            itemIcon.setImageResource(model.icon);
+        }
+        if (itemArrow != null) {
+            itemArrow.setVisibility(model.isShowArrow ? View.VISIBLE : View.GONE);
+        }
+
+        return view;
+    }
+
+    public void setBaseObjects(List objects) {
+        mBaseObjects = objects;
+    }
+}

+ 0 - 6
app/src/main/java/com/sikey/skcontact/model/BaseBean.java

@@ -1,6 +0,0 @@
-package com.sikey.skcontact.model;
-
-import java.io.Serializable;
-
-public class BaseBean implements Serializable {
-}

+ 23 - 0
app/src/main/java/com/sikey/skcontact/model/BaseModel.java

@@ -0,0 +1,23 @@
+package com.sikey.skcontact.model;
+
+import com.sikey.skcontact.utils.Constant;
+
+import java.io.Serializable;
+
+public class BaseModel implements Serializable {
+    public Constant.CellType cellType;
+    public String title = "";
+    public String subTitle = "";
+    public int backgroundImage = 0; //背景图
+    public int backgroundColor = 0; //背景颜色
+    public int icon = 0;
+    public String value = "";
+    public boolean isShowArrow = true;
+    public boolean isOn = false;
+    public int subColor = 0;
+    public int titileColor = 0;
+    public int editMaxWidth = 0;
+    public int editInputType = 0;
+    public boolean isHighlight = false;
+    public boolean isEditTextEnable = true; //输入框是否可用
+}

+ 1 - 1
app/src/main/java/com/sikey/skcontact/model/ContactBean.java

@@ -1,6 +1,6 @@
 package com.sikey.skcontact.model;
 
-public class ContactBean extends BaseBean {
+public class ContactBean extends BaseModel {
     public long _id = 0;
     public String id = "";
     public String userId = "";

+ 29 - 0
app/src/main/java/com/sikey/skcontact/utils/Constant.java

@@ -1,6 +1,35 @@
 package com.sikey.skcontact.utils;
 
 public class Constant {
+    public static String PACKAGE_NAME = "com.xplora.skcontact";
     public final static String EXTRA_VIDEO_TYPE = "ExtraVideoType";
     public final static String EXTRA_VIDEO_TARGET_ID = "ExtraVideoTargetId";
+
+    public enum CellType {
+        TITLE,
+        TITLE_SUBTITLE,
+        TITLE_CENTER,
+        TITLE_EDIT,
+        TITLE_APN,
+        ICON_TITLE,
+        ICON_TITLE_SUBTITLE,
+        ICON_TITLE_CENTER,
+        PROGRESS_TITLE,
+        PROGRESS_TITLE_SUBTITLE,
+        XPSTYLE,
+        XPSTYLE2,
+        SWITCH,
+        SWITCH_RIGHT,
+        SWITCH_FOOTER,
+        CHECKBOX,
+        CHECKBOX_HIGHLIGHT,
+        REFRESH,
+        CANCEL_SURE,
+        APN_ADD,
+        SURE,
+        MESSAGE,
+        EMPTY,
+        EMPTY2,
+        GONE,
+    }
 }

+ 84 - 0
app/src/main/java/com/sikey/skcontact/utils/ResUtils.java

@@ -0,0 +1,84 @@
+package com.sikey.skcontact.utils;
+import android.content.Context;
+
+import java.util.Locale;
+
+public class ResUtils {
+    private static Context mSaveContext = null;
+    private static String mSavePackageName = null;
+
+    public static void initResUtils(Context context, String name) {
+        mSaveContext = context;
+        mSavePackageName = name;
+    }
+
+    public static String getString(int strId,Object...formatArgs) {
+        if (mSaveContext == null)
+            return null;
+        return mSaveContext.getResources().getString(strId, formatArgs);
+    }
+
+    public static int getStringId(String prefix, int index) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(prefix).append(index);
+
+        return ResUtils.getResourcesId(builder.toString(), "string");
+    }
+
+    public static String[] getStringArray(String prefix, int count) {
+        String[] array = new String[count];
+        for (int i = 0; i < count; i++) {
+            int resId = getStringId(prefix, i);
+            array[i] = resId > 0 ? getString(resId) : "";
+        }
+        return array;
+    }
+
+    public static int getImageId(String prefix, int index) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(prefix).append(index);
+
+        return ResUtils.getResourcesId(builder.toString(), "drawable");
+    }
+
+    public static int getWidgetId(String prefix, int index) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(prefix).append(index);
+
+        return ResUtils.getResourcesId(builder.toString(), "id");
+    }
+
+    public static int getLayoutId(String prefix, int index) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(prefix).append(index);
+
+        return ResUtils.getResourcesId(builder.toString(), "layout");
+    }
+
+    public static int getResourcesId(String imageName, String defType) {
+        if (mSaveContext == null)
+            return 0;
+
+        return mSaveContext.getResources().getIdentifier(imageName, defType, mSavePackageName);
+    }
+
+    public static int getResourcesId(Context context, String packageName, String imageName, String defType) {
+        return context.getResources().getIdentifier(imageName, defType, packageName);
+    }
+
+    /**
+     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
+     */
+    public static int dip2px(float dpValue) {
+        final float scale = mSaveContext.getResources().getDisplayMetrics().density;
+        return (int) (dpValue * scale + 0.5f);
+    }
+
+    /**
+     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
+     */
+    public static int px2dip(float pxValue) {
+        final float scale = mSaveContext.getResources().getDisplayMetrics().density;
+        return (int) (pxValue / scale + 0.5f);
+    }
+}

+ 10 - 0
app/src/main/res/drawable/bg_gray.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <!-- 填充的颜色 -->
+    <solid android:color="@color/sk_gray" />
+
+    <!-- 圆角的半径 -->
+    <corners android:radius="5dp" />
+</shape>

BIN=BIN
app/src/main/res/drawable/icon_arrow.png


+ 61 - 0
app/src/main/res/layout/activity_list_title.xml

@@ -0,0 +1,61 @@
+<?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:background="@color/black"
+    >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        >
+
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:textAlignment="center"
+            android:textSize="17sp"
+            android:textStyle="bold"
+            android:textColor="#FFFFFFFF"
+            android:fontFamily="Roboto"
+            android:visibility="gone"
+            />
+
+        <ListView
+            android:id="@+id/activity_listview"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="7dp"
+            android:layout_marginBottom="3dp"
+            android:scrollbarThumbVertical="@color/sk_yellow"
+            >
+        </ListView>
+
+    </LinearLayout>
+
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/empty_view"
+        android:visibility="gone">
+
+        <TextView
+            android:id="@+id/empty_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerHorizontal="true"
+            android:layout_marginTop="65dp"
+            android:textSize="12sp"
+            android:textFontWeight="400"
+            android:textColor="#FFFFFFFF"
+            android:fontFamily="Roboto"
+            android:textAlignment="center"
+            />
+
+    </RelativeLayout>
+
+</RelativeLayout>

+ 9 - 0
app/src/main/res/layout/item_gone.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="0dp"
+    android:visibility="gone"
+    >
+
+</LinearLayout>

+ 70 - 0
app/src/main/res/layout/item_icon_title.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingTop="2dp"
+    android:paddingBottom="2dp"
+    android:paddingStart="5dp"
+    android:paddingEnd="5dp"
+    >
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="@drawable/bg_gray"
+        >
+
+        <ImageView
+            android:id="@+id/item_icon"
+            android:layout_width="31dp"
+            android:layout_height="31dp"
+            android:layout_centerVertical="true"
+            android:layout_marginStart="8dp"
+            />
+
+        <TextView
+            android:id="@+id/item_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toEndOf="@+id/item_icon"
+            android:layout_marginStart="8dp"
+            android:layout_toStartOf="@+id/item_detail"
+            android:layout_marginEnd="8dp"
+            android:fontFamily="Roboto"
+            android:layout_centerVertical="true"
+            android:textColor="@color/white"
+            android:textSize="17sp"
+            android:ellipsize="marquee"
+            android:marqueeRepeatLimit="marquee_forever"
+            android:singleLine="true"
+            android:maxLines="1"
+            />
+
+        <TextView
+            android:id="@+id/item_detail"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toStartOf="@+id/item_arrow"
+            android:layout_marginEnd="8dp"
+            android:fontFamily="Roboto"
+            android:layout_centerVertical="true"
+            android:textColor="@color/white"
+            android:textSize="10sp"
+            tools:ignore="SmallSp"
+            android:visibility="gone"
+            />
+
+        <ImageView
+            android:id="@+id/item_arrow"
+            android:layout_width="6dp"
+            android:layout_height="10dp"
+            android:layout_centerVertical="true"
+            android:layout_alignParentEnd="true"
+            android:layout_marginEnd="9.5dp"
+            android:src="@drawable/icon_arrow"
+            />
+
+    </RelativeLayout>
+
+</LinearLayout>

+ 90 - 0
app/src/main/res/layout/item_icon_title_subtitle.xml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="45dp">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        >
+
+        <ImageView
+            android:id="@+id/item_icon"
+            android:layout_width="24dp"
+            android:layout_height="24dp"
+            android:layout_centerVertical="true"
+            android:layout_marginStart="12dp"
+            />
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_centerInParent="true"
+            android:orientation="vertical"
+            android:layout_toEndOf="@+id/item_icon"
+            android:layout_marginStart="10dp"
+            android:layout_toStartOf="@+id/item_detail"
+            android:layout_marginEnd="8dp"
+            android:layout_alignParentEnd="true"
+            >
+
+            <TextView
+                android:id="@+id/item_title"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="5dp"
+                android:fontFamily="Roboto"
+                android:textAlignment="textStart"
+                android:textColor="@color/white"
+                android:textFontWeight="700"
+                android:textSize="12sp"
+                android:ellipsize="marquee"
+                android:marqueeRepeatLimit="marquee_forever"
+                android:singleLine="true"
+                android:maxLines="1"
+                />
+
+            <TextView
+                android:id="@+id/item_subtitle"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="5dp"
+                android:fontFamily="Roboto"
+                android:textAlignment="textStart"
+                android:layout_centerVertical="true"
+                android:textColor="@color/white"
+                android:textSize="12sp"
+                android:textFontWeight="400"
+                android:text="subtitle"
+                />
+        </LinearLayout>
+
+
+        <TextView
+            android:id="@+id/item_detail"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toStartOf="@+id/item_arrow"
+            android:layout_marginEnd="8dp"
+            android:fontFamily="Roboto"
+            android:layout_centerVertical="true"
+            android:textColor="@color/white"
+            android:textSize="10sp"
+            tools:ignore="SmallSp"
+            android:visibility="gone"
+            />
+
+        <ImageView
+            android:id="@+id/item_arrow"
+            android:layout_width="6dp"
+            android:layout_height="10dp"
+            android:layout_centerVertical="true"
+            android:layout_alignParentEnd="true"
+            android:layout_marginEnd="9.5dp"
+            android:src="@drawable/icon_arrow"
+            />
+
+    </RelativeLayout>
+
+</LinearLayout>

+ 53 - 0
app/src/main/res/layout/item_title.xml

@@ -0,0 +1,53 @@
+<?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:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingTop="2dp"
+    android:paddingBottom="2dp"
+    android:paddingStart="5dp"
+    android:paddingEnd="5dp">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="40dp"
+        android:background="@drawable/bg_gray"
+        >
+
+        <TextView
+            android:id="@+id/item_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="10dp"
+            android:layout_centerVertical="true"
+            android:fontFamily="Roboto"
+            android:textColor="@color/white"
+            android:textSize="17sp" />
+
+        <TextView
+            android:id="@+id/item_detail"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toStartOf="@+id/item_arrow"
+            android:layout_marginEnd="8dp"
+            android:layout_centerVertical="true"
+            android:layout_alignParentEnd="true"
+            android:fontFamily="Roboto"
+            android:textColor="@color/white"
+            android:textSize="10sp"
+            tools:ignore="RelativeOverlap" />
+
+        <ImageView
+            android:id="@+id/item_arrow"
+            android:layout_width="6dp"
+            android:layout_height="10dp"
+            android:layout_centerVertical="true"
+            android:layout_alignParentEnd="true"
+            android:layout_marginEnd="9.5dp"
+            android:src="@drawable/icon_arrow"
+            />
+
+    </RelativeLayout>
+
+</RelativeLayout>

+ 61 - 0
app/src/main/res/layout/item_title_subtitle.xml

@@ -0,0 +1,61 @@
+<?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"
+    android:paddingTop="2dp"
+    android:paddingBottom="2dp"
+    android:paddingStart="5dp"
+    android:paddingEnd="5dp">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="60dp"
+        android:background="@drawable/bg_gray"
+        >
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:layout_marginStart="10dp"
+            >
+
+            <TextView
+                android:id="@+id/item_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="8dp"
+                android:layout_marginEnd="20dp"
+                android:fontFamily="Roboto"
+                android:textColor="@color/white"
+                android:textFontWeight="400"
+                android:textSize="17sp"
+                android:ellipsize="end"
+                android:maxLines="1"
+                />
+
+            <TextView
+                android:id="@+id/item_subtitle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="8dp"
+                android:layout_marginEnd="5dp"
+                android:fontFamily="Roboto"
+                android:textColor="#B2FFFFFF"
+                android:textSize="15sp"
+                android:textFontWeight="400"
+                />
+        </LinearLayout>
+
+        <ImageView
+            android:id="@+id/item_arrow"
+            android:layout_width="6dp"
+            android:layout_height="10dp"
+            android:layout_centerVertical="true"
+            android:layout_alignParentEnd="true"
+            android:layout_marginEnd="9.5dp"
+            android:src="@drawable/icon_arrow"
+            />
+    </RelativeLayout>
+
+</RelativeLayout>

+ 2 - 0
app/src/main/res/values/colors.xml

@@ -7,4 +7,6 @@
     <color name="teal_700">#FF018786</color>
     <color name="black">#FF000000</color>
     <color name="white">#FFFFFFFF</color>
+    <color name="sk_gray">#303030</color>
+    <color name="sk_yellow">#FFC01F</color>
 </resources>