sunnnl

기기 관리 퍼블리싱

1 +package com.sunnni.smartdoorlock.data;
2 +
3 +public class Device {
4 + public String deviceNumber;
5 + public String registerDate;
6 +
7 + public Device(String number, String date){
8 + this.deviceNumber = number;
9 + this.registerDate = date;
10 + }
11 +}
1 package com.sunnni.smartdoorlock.ui; 1 package com.sunnni.smartdoorlock.ui;
2 2
3 +import androidx.appcompat.app.AlertDialog;
3 import androidx.appcompat.app.AppCompatActivity; 4 import androidx.appcompat.app.AppCompatActivity;
5 +import androidx.appcompat.widget.Toolbar;
6 +import androidx.cardview.widget.CardView;
7 +import androidx.core.widget.NestedScrollView;
8 +import androidx.recyclerview.widget.LinearLayoutManager;
9 +import androidx.recyclerview.widget.RecyclerView;
4 10
11 +import android.content.DialogInterface;
5 import android.os.Bundle; 12 import android.os.Bundle;
13 +import android.view.View;
14 +import android.widget.ScrollView;
15 +import android.widget.Toast;
6 16
7 import com.sunnni.smartdoorlock.R; 17 import com.sunnni.smartdoorlock.R;
18 +import com.sunnni.smartdoorlock.data.Device;
19 +
20 +import java.util.ArrayList;
21 +import java.util.Objects;
8 22
9 public class DeviceManagerActivity extends AppCompatActivity { 23 public class DeviceManagerActivity extends AppCompatActivity {
10 24
25 + ArrayList<Device> mList = new ArrayList<Device>();
26 + RecyclerView mRecyclerView;
27 + DeviceRecyclerViewAdapter mAdapter;
28 +
29 + AlertDialog alertDialog;
30 +
11 @Override 31 @Override
12 protected void onCreate(Bundle savedInstanceState) { 32 protected void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState); 33 super.onCreate(savedInstanceState);
14 setContentView(R.layout.activity_device_manager); 34 setContentView(R.layout.activity_device_manager);
35 +
36 + Toolbar mToolbar = findViewById(R.id.toolbar_device_manager);
37 + setToolbar(mToolbar);
38 +
39 + setRecyclerView();
40 + setDeviceList();
41 +
42 + init();
43 + }
44 +
45 + private void setToolbar(Toolbar toolbar){
46 + setSupportActionBar(toolbar);
47 + Objects.requireNonNull(getSupportActionBar()).setDisplayShowCustomEnabled(true);
48 + getSupportActionBar().setDisplayShowTitleEnabled(false);
49 + getSupportActionBar().setDisplayHomeAsUpEnabled(true);
50 + getSupportActionBar().setHomeAsUpIndicator(R.drawable.round_chevron_left_white_24);
51 +
52 + toolbar.setNavigationOnClickListener(new View.OnClickListener() {
53 + @Override
54 + public void onClick(View v) {
55 + finish();
56 + }
57 + });
58 + }
59 +
60 + private void init(){
61 + CardView cardView = findViewById(R.id.card_add_device);
62 + cardView.setOnClickListener(new View.OnClickListener() {
63 + @Override
64 + public void onClick(View v) {
65 + remoteControlDialog();
66 + }
67 + });
68 +
69 + NestedScrollView nestedScrollView = findViewById(R.id.scroll_device);
70 + nestedScrollView.getParent().requestChildFocus(nestedScrollView, nestedScrollView);
71 + }
72 +
73 + private void setRecyclerView(){
74 + mRecyclerView = findViewById(R.id.rv_device_list);
75 + LinearLayoutManager manager = new LinearLayoutManager(this);
76 + mAdapter = new DeviceRecyclerViewAdapter(mList);
77 + mRecyclerView.setLayoutManager(manager);
78 + mRecyclerView.setAdapter(mAdapter);
79 + }
80 +
81 + // 기기 목록 dummy data -> api 생성되면 수정
82 + private void setDeviceList(){
83 + Device temp;
84 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
85 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
86 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
87 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
88 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
89 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
90 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
91 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
92 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
93 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
94 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
95 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
96 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
97 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
98 + mList.add(temp = new Device("0047617826460", "2020.10.08 17:21:30"));
99 + mAdapter.notifyDataSetChanged();
100 + }
101 +
102 + private void remoteControlDialog() {
103 + AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AlertDialogTheme);
104 + builder.setTitle(getString(R.string.device_manager_add_device))
105 + .setMessage(getString(R.string.device_alert_message));
106 + builder.setPositiveButton("추가", new DialogInterface.OnClickListener() {
107 + @Override
108 + public void onClick(DialogInterface dialog, int which) {
109 + Toast.makeText(DeviceManagerActivity.this, "도어락에 기기를 태그해주세요.", Toast.LENGTH_LONG).show();
110 + }
111 + });
112 + builder.setNegativeButton("취소", new DialogInterface.OnClickListener() {
113 + @Override
114 + public void onClick(DialogInterface dialog, int which) {
115 +
116 + }
117 + });
118 + alertDialog = builder.create();
119 + alertDialog.show();
15 } 120 }
16 } 121 }
......
1 +package com.sunnni.smartdoorlock.ui;
2 +
3 +import android.content.DialogInterface;
4 +import android.view.LayoutInflater;
5 +import android.view.View;
6 +import android.view.ViewGroup;
7 +import android.widget.ImageView;
8 +import android.widget.TextView;
9 +import android.widget.Toast;
10 +
11 +import androidx.annotation.NonNull;
12 +import androidx.appcompat.app.AlertDialog;
13 +import androidx.core.content.res.ResourcesCompat;
14 +import androidx.recyclerview.widget.RecyclerView;
15 +
16 +import com.sunnni.smartdoorlock.R;
17 +import com.sunnni.smartdoorlock.data.Device;
18 +
19 +import java.util.ArrayList;
20 +
21 +public class DeviceRecyclerViewAdapter extends RecyclerView.Adapter<DeviceRecyclerViewAdapter.DeviceViewHolder> {
22 +
23 + ArrayList<Device> mList;
24 +
25 + static class DeviceViewHolder extends RecyclerView.ViewHolder {
26 + TextView mTvDeviceNum, mTvRegisterDate;
27 + ImageView mTrashcan;
28 +
29 + DeviceViewHolder(View v) {
30 + super(v);
31 + this.mTvDeviceNum = v.findViewById(R.id.tv_device_number);
32 + this.mTvRegisterDate = v.findViewById(R.id.tv_device_register_date);
33 + this.mTrashcan = v.findViewById(R.id.img_trashcan);
34 + }
35 +
36 + void bind(Device device) {
37 + mTvDeviceNum.setText(device.deviceNumber);
38 + mTvRegisterDate.setText(device.registerDate);
39 +
40 + mTrashcan.setOnClickListener(new View.OnClickListener() {
41 + @Override
42 + public void onClick(View v) {
43 + AlertDialog.Builder builder = new AlertDialog.Builder(itemView.getContext(), R.style.AlertDialogTheme);
44 + builder.setTitle("확인")
45 + .setMessage(R.string.alert_message_delete);
46 + builder.setPositiveButton("삭제", new DialogInterface.OnClickListener() {
47 + @Override
48 + public void onClick(DialogInterface dialog, int which) {
49 + Toast.makeText(itemView.getContext(), "삭제되었습니다.", Toast.LENGTH_SHORT).show();
50 + }
51 + });
52 + builder.setNegativeButton("취소", new DialogInterface.OnClickListener() {
53 + @Override
54 + public void onClick(DialogInterface dialog, int which) {
55 +
56 + }
57 + });
58 + AlertDialog alertDialog = builder.create();
59 + alertDialog.show();
60 + }
61 + });
62 + }
63 + }
64 +
65 + public DeviceRecyclerViewAdapter(ArrayList<Device> list) {
66 + this.mList = list;
67 + }
68 +
69 + @NonNull
70 + @Override
71 + public DeviceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
72 + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_item_device, parent, false);
73 +
74 + return new DeviceViewHolder(view);
75 + }
76 +
77 + @Override
78 + public void onBindViewHolder(@NonNull DeviceViewHolder holder, int position) {
79 + holder.bind(mList.get(position));
80 + }
81 +
82 + @Override
83 + public int getItemCount() {
84 + return mList.size();
85 + }
86 +
87 + public void addDevice(Device device) {
88 + mList.add(device);
89 + }
90 +}
...@@ -2,9 +2,11 @@ package com.sunnni.smartdoorlock.ui; ...@@ -2,9 +2,11 @@ package com.sunnni.smartdoorlock.ui;
2 2
3 import androidx.appcompat.app.AppCompatActivity; 3 import androidx.appcompat.app.AppCompatActivity;
4 import androidx.appcompat.widget.Toolbar; 4 import androidx.appcompat.widget.Toolbar;
5 +import androidx.cardview.widget.CardView;
5 6
6 import android.os.Bundle; 7 import android.os.Bundle;
7 import android.view.View; 8 import android.view.View;
9 +import android.widget.Toast;
8 10
9 import com.sunnni.smartdoorlock.R; 11 import com.sunnni.smartdoorlock.R;
10 12
......
1 package com.sunnni.smartdoorlock.ui; 1 package com.sunnni.smartdoorlock.ui;
2 2
3 import androidx.appcompat.app.AppCompatActivity; 3 import androidx.appcompat.app.AppCompatActivity;
4 +import androidx.appcompat.widget.Toolbar;
4 5
5 import android.os.Bundle; 6 import android.os.Bundle;
7 +import android.view.View;
6 8
7 import com.sunnni.smartdoorlock.R; 9 import com.sunnni.smartdoorlock.R;
8 10
11 +import java.util.Objects;
12 +
9 public class VideoCheckActivity extends AppCompatActivity { 13 public class VideoCheckActivity extends AppCompatActivity {
10 14
11 @Override 15 @Override
12 protected void onCreate(Bundle savedInstanceState) { 16 protected void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState); 17 super.onCreate(savedInstanceState);
14 setContentView(R.layout.activity_video_check); 18 setContentView(R.layout.activity_video_check);
19 +
20 + Toolbar mToolbar = findViewById(R.id.toolbar_video_check);
21 + setToolbar(mToolbar);
22 + }
23 +
24 + private void setToolbar(Toolbar toolbar){
25 + setSupportActionBar(toolbar);
26 + Objects.requireNonNull(getSupportActionBar()).setDisplayShowCustomEnabled(true);
27 + getSupportActionBar().setDisplayShowTitleEnabled(false);
28 + getSupportActionBar().setDisplayHomeAsUpEnabled(true);
29 + getSupportActionBar().setHomeAsUpIndicator(R.drawable.round_chevron_left_white_24);
30 +
31 + toolbar.setNavigationOnClickListener(new View.OnClickListener() {
32 + @Override
33 + public void onClick(View v) {
34 + finish();
35 + }
36 + });
15 } 37 }
16 } 38 }
......
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Drop Shadow Stack -->
3 + <item>
4 + <shape>
5 + <padding
6 + android:bottom="2.5dp" />
7 + <solid android:color="#09CCCCCC" />
8 + </shape>
9 + </item>
10 + <item>
11 + <shape>
12 + <padding
13 + android:bottom="2.5dp" />
14 + <solid android:color="#0DCCCCCC" />
15 + </shape>
16 + </item>
17 + <item>
18 + <shape>
19 + <padding
20 + android:bottom="2.5dp" />
21 + <solid android:color="#12CCCCCC" />
22 + </shape>
23 + </item>
24 + <item>
25 + <shape>
26 + <padding
27 + android:bottom="2.5dp" />
28 + <solid android:color="#15CCCCCC" />
29 + </shape>
30 + </item>
31 + <item>
32 + <shape>
33 + <padding
34 + android:bottom="2.5dp" />
35 + <solid android:color="#1ACCCCCC" />
36 + </shape>
37 + </item>
38 + <item>
39 + <shape>
40 + <padding
41 + android:bottom="2.5dp" />
42 + <solid android:color="#1AC1C1C1" />
43 + </shape>
44 + </item><!-- Background -->
45 + <item>
46 + <shape>
47 + <solid android:color="@color/colorPrimary" />
48 + </shape>
49 + </item>
50 +</layer-list>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:shape="rectangle">
4 +
5 + <solid android:color="@color/colorAccent" />
6 + <corners android:radius="10dp" />
7 + <stroke
8 + android:width="1dp"
9 + android:color="@color/colorLine"
10 + android:dashWidth="5dp"
11 + android:dashGap="5dp" />
12 +
13 +</shape>
...\ No newline at end of file ...\ No newline at end of file
1 +<vector xmlns:android="http://schemas.android.com/apk/res/android"
2 + android:width="24dp"
3 + android:height="24dp"
4 + android:viewportWidth="24"
5 + android:viewportHeight="24"
6 + android:tint="@color/colorPrimary">
7 + <path
8 + android:fillColor="@android:color/white"
9 + android:pathData="M12,7c-0.55,0 -1,0.45 -1,1v3L8,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h3v3c0,0.55 0.45,1 1,1s1,-0.45 1,-1v-3h3c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-3L13,8c0,-0.55 -0.45,-1 -1,-1zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
10 +</vector>
1 +<vector xmlns:android="http://schemas.android.com/apk/res/android"
2 + android:width="24dp"
3 + android:height="24dp"
4 + android:viewportWidth="24"
5 + android:viewportHeight="24"
6 + android:tint="#ff5252">
7 + <path
8 + android:fillColor="@android:color/white"
9 + android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V9c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v10zM18,4h-2.5l-0.71,-0.71c-0.18,-0.18 -0.44,-0.29 -0.7,-0.29H9.91c-0.26,0 -0.52,0.11 -0.7,0.29L8.5,4H6c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1z"/>
10 +</vector>
1 +<vector xmlns:android="http://schemas.android.com/apk/res/android"
2 + android:width="24dp"
3 + android:height="24dp"
4 + android:viewportWidth="24"
5 + android:viewportHeight="24"
6 + android:tint="#111111">
7 + <path
8 + android:fillColor="@android:color/white"
9 + android:pathData="M4,10.5c-0.83,0 -1.5,0.67 -1.5,1.5s0.67,1.5 1.5,1.5 1.5,-0.67 1.5,-1.5 -0.67,-1.5 -1.5,-1.5zM4,4.5c-0.83,0 -1.5,0.67 -1.5,1.5S3.17,7.5 4,7.5 5.5,6.83 5.5,6 4.83,4.5 4,4.5zM4,16.5c-0.83,0 -1.5,0.68 -1.5,1.5s0.68,1.5 1.5,1.5 1.5,-0.68 1.5,-1.5 -0.67,-1.5 -1.5,-1.5zM8,19h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L8,17c-0.55,0 -1,0.45 -1,1s0.45,1 1,1zM8,13h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L8,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1zM7,6c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L8,5c-0.55,0 -1,0.45 -1,1z"/>
10 +</vector>
1 +<vector xmlns:android="http://schemas.android.com/apk/res/android"
2 + android:width="24dp"
3 + android:height="24dp"
4 + android:viewportWidth="24"
5 + android:viewportHeight="24"
6 + android:tint="#90a4ae">
7 + <path
8 + android:fillColor="@android:color/white"
9 + android:pathData="M19,3h-1L18,2c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1v1L8,3L8,2c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1v1L5,3c-1.11,0 -1.99,0.9 -1.99,2L3,19c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM18,19L6,19c-0.55,0 -1,-0.45 -1,-1L5,8h14v10c0,0.55 -0.45,1 -1,1zM8,10h3c0.55,0 1,0.45 1,1v3c0,0.55 -0.45,1 -1,1L8,15c-0.55,0 -1,-0.45 -1,-1v-3c0,-0.55 0.45,-1 1,-1z"/>
10 +</vector>
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 +<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:layout_width="match_parent"
4 + android:layout_height="wrap_content"
5 + android:id="@+id/scroll_device">
6 +
7 + <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto" 8 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools" 9 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent" 10 android:layout_width="match_parent"
6 android:layout_height="match_parent" 11 android:layout_height="match_parent"
7 tools:context=".ui.DeviceManagerActivity"> 12 tools:context=".ui.DeviceManagerActivity">
8 13
9 -</androidx.constraintlayout.widget.ConstraintLayout>
...\ No newline at end of file ...\ No newline at end of file
14 + <androidx.appcompat.widget.Toolbar
15 + android:id="@+id/toolbar_device_manager"
16 + android:layout_width="0dp"
17 + android:layout_height="?attr/actionBarSize"
18 + android:background="@color/colorBackground"
19 + app:layout_constraintEnd_toEndOf="parent"
20 + app:layout_constraintStart_toStartOf="parent"
21 + app:layout_constraintTop_toTopOf="parent">
22 +
23 + <TextView
24 + android:layout_width="wrap_content"
25 + android:layout_height="wrap_content"
26 + android:fontFamily="@font/g_market_sans_ttf_medium"
27 + android:text="@string/menu_device_manager"
28 + android:textColor="@color/colorMainText"
29 + android:textSize="15sp" />
30 +
31 + </androidx.appcompat.widget.Toolbar>
32 +
33 + <androidx.constraintlayout.widget.ConstraintLayout
34 + android:id="@+id/cl_add_device_background"
35 + android:layout_width="0dp"
36 + android:layout_height="0dp"
37 + android:background="@drawable/bg_shadow_bottom_dark"
38 + app:layout_constraintEnd_toEndOf="parent"
39 + app:layout_constraintDimensionRatio="6:1"
40 + app:layout_constraintStart_toStartOf="parent"
41 + app:layout_constraintTop_toBottomOf="@+id/toolbar_device_manager" />
42 +
43 + <androidx.cardview.widget.CardView
44 + android:id="@+id/card_add_device"
45 + android:layout_width="0dp"
46 + android:layout_height="0dp"
47 + android:orientation="horizontal"
48 + app:cardCornerRadius="10dp"
49 + app:layout_constraintDimensionRatio="5:2"
50 + app:layout_constraintEnd_toEndOf="parent"
51 + app:layout_constraintStart_toStartOf="parent"
52 + app:layout_constraintTop_toTopOf="@+id/cl_add_device_background"
53 + app:layout_constraintWidth_default="percent"
54 + app:layout_constraintWidth_percent="0.6">
55 +
56 + <androidx.constraintlayout.widget.ConstraintLayout
57 + android:layout_width="match_parent"
58 + android:layout_height="match_parent"
59 + android:layout_margin="10dp"
60 + android:background="@drawable/bg_white_stroke">
61 +
62 + <ImageView
63 + android:id="@+id/img_plus"
64 + android:layout_width="wrap_content"
65 + android:layout_height="wrap_content"
66 + android:layout_marginEnd="3dp"
67 + android:src="@drawable/round_add_circle_outline_24"
68 + app:layout_constraintBottom_toBottomOf="parent"
69 + app:layout_constraintEnd_toStartOf="@+id/tv_add_device"
70 + app:layout_constraintHorizontal_chainStyle="packed"
71 + app:layout_constraintStart_toStartOf="parent"
72 + app:layout_constraintTop_toTopOf="parent" />
73 +
74 + <TextView
75 + android:id="@+id/tv_add_device"
76 + android:layout_width="wrap_content"
77 + android:layout_height="wrap_content"
78 + android:layout_marginStart="3dp"
79 + android:fontFamily="@font/g_market_sans_ttf_medium"
80 + android:text="@string/device_manager_add_device"
81 + android:textColor="@color/colorPrimary"
82 + android:textSize="17sp"
83 + app:layout_constraintBottom_toBottomOf="parent"
84 + app:layout_constraintEnd_toEndOf="parent"
85 + app:layout_constraintHorizontal_chainStyle="packed"
86 + app:layout_constraintStart_toEndOf="@+id/img_plus"
87 + app:layout_constraintTop_toTopOf="parent" />
88 +
89 + </androidx.constraintlayout.widget.ConstraintLayout>
90 +
91 + </androidx.cardview.widget.CardView>
92 +
93 + <androidx.constraintlayout.widget.Guideline
94 + android:id="@+id/gl_start"
95 + android:layout_width="wrap_content"
96 + android:layout_height="wrap_content"
97 + android:orientation="vertical"
98 + app:layout_constraintBottom_toBottomOf="parent"
99 + app:layout_constraintGuide_percent="0.05"
100 + app:layout_constraintStart_toStartOf="parent"
101 + app:layout_constraintTop_toTopOf="parent" />
102 +
103 + <androidx.constraintlayout.widget.Guideline
104 + android:id="@+id/gl_end"
105 + android:layout_width="wrap_content"
106 + android:layout_height="wrap_content"
107 + android:orientation="vertical"
108 + app:layout_constraintBottom_toBottomOf="parent"
109 + app:layout_constraintGuide_percent="0.95"
110 + app:layout_constraintStart_toStartOf="parent"
111 + app:layout_constraintTop_toTopOf="parent" />
112 +
113 + <ImageView
114 + android:id="@+id/img_icon_list"
115 + android:layout_width="wrap_content"
116 + android:layout_height="wrap_content"
117 + android:layout_marginTop="20dp"
118 + android:src="@drawable/round_format_list_bulleted_24"
119 + app:layout_constraintStart_toStartOf="@id/gl_start"
120 + app:layout_constraintTop_toBottomOf="@+id/card_add_device" />
121 +
122 + <TextView
123 + android:layout_width="wrap_content"
124 + android:layout_height="wrap_content"
125 + android:layout_marginStart="3dp"
126 + android:layout_marginTop="2dp"
127 + android:fontFamily="@font/g_market_sans_ttf_medium"
128 + android:text="@string/device_manager_device_list"
129 + android:textColor="#111111"
130 + android:textSize="17sp"
131 + app:layout_constraintBottom_toBottomOf="@id/img_icon_list"
132 + app:layout_constraintStart_toEndOf="@id/img_icon_list"
133 + app:layout_constraintTop_toTopOf="@+id/img_icon_list" />
134 +
135 + <androidx.recyclerview.widget.RecyclerView
136 + android:id="@+id/rv_device_list"
137 + android:layout_width="0dp"
138 + android:layout_height="wrap_content"
139 + android:layout_marginTop="10dp"
140 + app:layout_constraintBottom_toBottomOf="parent"
141 + app:layout_constraintEnd_toEndOf="@id/gl_end"
142 + app:layout_constraintStart_toStartOf="@id/gl_start"
143 + app:layout_constraintTop_toBottomOf="@+id/img_icon_list" />
144 +
145 + </androidx.constraintlayout.widget.ConstraintLayout>
146 +</androidx.core.widget.NestedScrollView>
...\ No newline at end of file ...\ No newline at end of file
......
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 +<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:id="@+id/scroll_remote_record"
4 + android:layout_width="match_parent"
5 + android:layout_height="wrap_content">
6 +
7 + <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto" 8 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools" 9 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent" 10 android:layout_width="match_parent"
...@@ -11,9 +16,9 @@ ...@@ -11,9 +16,9 @@
11 android:layout_width="0dp" 16 android:layout_width="0dp"
12 android:layout_height="?attr/actionBarSize" 17 android:layout_height="?attr/actionBarSize"
13 android:background="@color/colorBackground" 18 android:background="@color/colorBackground"
19 + android:elevation="7dp"
14 app:layout_constraintEnd_toEndOf="parent" 20 app:layout_constraintEnd_toEndOf="parent"
15 app:layout_constraintStart_toStartOf="parent" 21 app:layout_constraintStart_toStartOf="parent"
16 - android:elevation="7dp"
17 app:layout_constraintTop_toTopOf="parent"> 22 app:layout_constraintTop_toTopOf="parent">
18 23
19 <TextView 24 <TextView
...@@ -26,4 +31,47 @@ ...@@ -26,4 +31,47 @@
26 31
27 </androidx.appcompat.widget.Toolbar> 32 </androidx.appcompat.widget.Toolbar>
28 33
29 -</androidx.constraintlayout.widget.ConstraintLayout>
...\ No newline at end of file ...\ No newline at end of file
34 + <androidx.constraintlayout.widget.Guideline
35 + android:id="@+id/gl_start"
36 + android:layout_width="wrap_content"
37 + android:layout_height="wrap_content"
38 + android:orientation="vertical"
39 + app:layout_constraintBottom_toBottomOf="parent"
40 + app:layout_constraintGuide_percent="0.05"
41 + app:layout_constraintStart_toStartOf="parent"
42 + app:layout_constraintTop_toTopOf="parent" />
43 +
44 + <androidx.constraintlayout.widget.Guideline
45 + android:id="@+id/gl_end"
46 + android:layout_width="wrap_content"
47 + android:layout_height="wrap_content"
48 + android:orientation="vertical"
49 + app:layout_constraintBottom_toBottomOf="parent"
50 + app:layout_constraintGuide_percent="0.95"
51 + app:layout_constraintStart_toStartOf="parent"
52 + app:layout_constraintTop_toTopOf="parent" />
53 +
54 + <ImageView
55 + android:id="@+id/img_icon_list"
56 + android:layout_width="wrap_content"
57 + android:layout_height="wrap_content"
58 + android:layout_marginTop="20dp"
59 + android:src="@drawable/round_format_list_bulleted_24"
60 + app:layout_constraintStart_toStartOf="@id/gl_start"
61 + app:layout_constraintTop_toBottomOf="@+id/toolbar_remote_control_record" />
62 +
63 + <TextView
64 + android:layout_width="wrap_content"
65 + android:layout_height="wrap_content"
66 + android:layout_marginStart="3dp"
67 + android:layout_marginTop="2dp"
68 + android:fontFamily="@font/g_market_sans_ttf_medium"
69 + android:text="@string/menu_remote_control_record"
70 + android:textColor="#111111"
71 + android:textSize="17sp"
72 + app:layout_constraintBottom_toBottomOf="@id/img_icon_list"
73 + app:layout_constraintStart_toEndOf="@id/img_icon_list"
74 + app:layout_constraintTop_toTopOf="@+id/img_icon_list" />
75 +
76 + </androidx.constraintlayout.widget.ConstraintLayout>
77 +</androidx.core.widget.NestedScrollView>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -6,4 +6,24 @@ ...@@ -6,4 +6,24 @@
6 android:layout_height="match_parent" 6 android:layout_height="match_parent"
7 tools:context=".ui.VideoCheckActivity"> 7 tools:context=".ui.VideoCheckActivity">
8 8
9 + <androidx.appcompat.widget.Toolbar
10 + android:id="@+id/toolbar_video_check"
11 + android:layout_width="0dp"
12 + android:layout_height="?attr/actionBarSize"
13 + android:background="@color/colorBackground"
14 + app:layout_constraintEnd_toEndOf="parent"
15 + app:layout_constraintStart_toStartOf="parent"
16 + android:elevation="7dp"
17 + app:layout_constraintTop_toTopOf="parent">
18 +
19 + <TextView
20 + android:layout_width="wrap_content"
21 + android:layout_height="wrap_content"
22 + android:fontFamily="@font/g_market_sans_ttf_medium"
23 + android:text="@string/menu_video_check"
24 + android:textColor="@color/colorMainText"
25 + android:textSize="15sp" />
26 +
27 + </androidx.appcompat.widget.Toolbar>
28 +
9 </androidx.constraintlayout.widget.ConstraintLayout> 29 </androidx.constraintlayout.widget.ConstraintLayout>
...\ No newline at end of file ...\ No newline at end of file
......
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
3 + xmlns:app="http://schemas.android.com/apk/res-auto"
4 + android:layout_width="match_parent"
5 + android:layout_height="wrap_content"
6 + android:layout_marginBottom="10dp"
7 + app:cardCornerRadius="1dp">
8 +
9 + <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
10 + android:layout_width="match_parent"
11 + android:layout_height="wrap_content">
12 +
13 + <TextView
14 + android:id="@+id/tv_device_number"
15 + android:layout_width="wrap_content"
16 + android:layout_height="wrap_content"
17 + android:layout_marginStart="10dp"
18 + android:layout_marginBottom="5dp"
19 + android:fontFamily="@font/g_market_sans_ttf_medium"
20 + android:text="@string/sample_device_number"
21 + android:textColor="#212121"
22 + android:textSize="14sp"
23 + app:layout_constraintBottom_toTopOf="@+id/img_icon_calender"
24 + app:layout_constraintStart_toStartOf="parent"
25 + app:layout_constraintTop_toTopOf="parent"
26 + app:layout_constraintVertical_chainStyle="packed" />
27 +
28 + <ImageView
29 + android:id="@+id/img_icon_calender"
30 + android:layout_width="15dp"
31 + android:layout_height="15dp"
32 + android:src="@drawable/round_today_24"
33 + app:layout_constraintBottom_toBottomOf="parent"
34 + app:layout_constraintStart_toStartOf="@+id/tv_device_number"
35 + app:layout_constraintTop_toBottomOf="@id/tv_device_number"
36 + app:layout_constraintVertical_chainStyle="packed" />
37 +
38 + <TextView
39 + android:id="@+id/tv_device_register_date"
40 + android:layout_width="wrap_content"
41 + android:layout_height="wrap_content"
42 + android:layout_marginStart="5dp"
43 + android:layout_marginBottom="1dp"
44 + android:fontFamily="@font/g_market_sans_ttf_medium"
45 + android:text="@string/sample_date"
46 + android:textColor="#90a4ae"
47 + android:textSize="12sp"
48 + app:layout_constraintBottom_toBottomOf="@id/img_icon_calender"
49 + app:layout_constraintStart_toEndOf="@id/img_icon_calender"
50 + app:layout_constraintTop_toTopOf="@id/img_icon_calender" />
51 +
52 + <ImageView
53 + android:id="@+id/img_trashcan"
54 + android:layout_width="wrap_content"
55 + android:layout_height="wrap_content"
56 + android:layout_marginVertical="20dp"
57 + android:layout_marginEnd="15dp"
58 + android:src="@drawable/round_delete_24"
59 + app:layout_constraintBottom_toBottomOf="parent"
60 + app:layout_constraintEnd_toEndOf="parent"
61 + app:layout_constraintTop_toTopOf="parent" />
62 +
63 + </androidx.constraintlayout.widget.ConstraintLayout>
64 +
65 +</androidx.cardview.widget.CardView>
...\ No newline at end of file ...\ No newline at end of file
...@@ -16,4 +16,12 @@ ...@@ -16,4 +16,12 @@
16 <string name="tag_status_on_detail">초 후 꺼짐</string> 16 <string name="tag_status_on_detail">초 후 꺼짐</string>
17 17
18 <string name="alert_message">버튼을 클릭하시면 원격으로 도어락을 열 수 있습니다.\n\n정말 도어락을 여시겠습니까?\n\n</string> 18 <string name="alert_message">버튼을 클릭하시면 원격으로 도어락을 열 수 있습니다.\n\n정말 도어락을 여시겠습니까?\n\n</string>
19 +
20 + <string name="device_manager_add_device">기기 추가</string>
21 + <string name="device_manager_device_list">기기 목록</string>
22 + <string name="sample_device_number">0047617826460</string>
23 + <string name="sample_date">2020.10.08 17:21:30</string>
24 + <string name="device_alert_message">버튼을 누르신 후 기기를 도어락에 태그하시면 추가됩니다.\n\n</string>
25 +
26 + <string name="alert_message_delete">정말 삭제하시겠습니까?\n\n</string>
19 </resources> 27 </resources>
......