Showing
16 changed files
with
637 additions
and
26 deletions
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> |
app/src/main/res/drawable/round_today_24.xml
0 → 100644
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 | - xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | - xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | 3 | android:layout_width="match_parent" |
6 | - android:layout_height="match_parent" | 4 | + android:layout_height="wrap_content" |
7 | - tools:context=".ui.DeviceManagerActivity"> | 5 | + android:id="@+id/scroll_device"> |
8 | 6 | ||
9 | -</androidx.constraintlayout.widget.ConstraintLayout> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
7 | + <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
8 | + xmlns:app="http://schemas.android.com/apk/res-auto" | ||
9 | + xmlns:tools="http://schemas.android.com/tools" | ||
10 | + android:layout_width="match_parent" | ||
11 | + android:layout_height="match_parent" | ||
12 | + tools:context=".ui.DeviceManagerActivity"> | ||
13 | + | ||
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 | - xmlns:app="http://schemas.android.com/apk/res-auto" | 3 | + android:id="@+id/scroll_remote_record" |
4 | - xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | 4 | android:layout_width="match_parent" |
6 | - android:layout_height="match_parent" | 5 | + android:layout_height="wrap_content"> |
7 | - tools:context=".ui.RemoteControlRecordActivity"> | 6 | + |
8 | - | 7 | + <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
9 | - <androidx.appcompat.widget.Toolbar | 8 | + xmlns:app="http://schemas.android.com/apk/res-auto" |
10 | - android:id="@+id/toolbar_remote_control_record" | 9 | + xmlns:tools="http://schemas.android.com/tools" |
11 | - android:layout_width="0dp" | 10 | + android:layout_width="match_parent" |
12 | - android:layout_height="?attr/actionBarSize" | 11 | + android:layout_height="match_parent" |
13 | - android:background="@color/colorBackground" | 12 | + tools:context=".ui.RemoteControlRecordActivity"> |
14 | - app:layout_constraintEnd_toEndOf="parent" | 13 | + |
15 | - app:layout_constraintStart_toStartOf="parent" | 14 | + <androidx.appcompat.widget.Toolbar |
16 | - android:elevation="7dp" | 15 | + android:id="@+id/toolbar_remote_control_record" |
17 | - app:layout_constraintTop_toTopOf="parent"> | 16 | + android:layout_width="0dp" |
17 | + android:layout_height="?attr/actionBarSize" | ||
18 | + android:background="@color/colorBackground" | ||
19 | + android:elevation="7dp" | ||
20 | + app:layout_constraintEnd_toEndOf="parent" | ||
21 | + app:layout_constraintStart_toStartOf="parent" | ||
22 | + app:layout_constraintTop_toTopOf="parent"> | ||
23 | + | ||
24 | + <TextView | ||
25 | + android:layout_width="wrap_content" | ||
26 | + android:layout_height="wrap_content" | ||
27 | + android:fontFamily="@font/g_market_sans_ttf_medium" | ||
28 | + android:text="@string/menu_remote_control_record" | ||
29 | + android:textColor="@color/colorMainText" | ||
30 | + android:textSize="15sp" /> | ||
31 | + | ||
32 | + </androidx.appcompat.widget.Toolbar> | ||
33 | + | ||
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" /> | ||
18 | 62 | ||
19 | <TextView | 63 | <TextView |
20 | android:layout_width="wrap_content" | 64 | android:layout_width="wrap_content" |
21 | android:layout_height="wrap_content" | 65 | android:layout_height="wrap_content" |
66 | + android:layout_marginStart="3dp" | ||
67 | + android:layout_marginTop="2dp" | ||
22 | android:fontFamily="@font/g_market_sans_ttf_medium" | 68 | android:fontFamily="@font/g_market_sans_ttf_medium" |
23 | android:text="@string/menu_remote_control_record" | 69 | android:text="@string/menu_remote_control_record" |
24 | - android:textColor="@color/colorMainText" | 70 | + android:textColor="#111111" |
25 | - android:textSize="15sp" /> | 71 | + android:textSize="17sp" |
26 | - | 72 | + app:layout_constraintBottom_toBottomOf="@id/img_icon_list" |
27 | - </androidx.appcompat.widget.Toolbar> | 73 | + app:layout_constraintStart_toEndOf="@id/img_icon_list" |
74 | + app:layout_constraintTop_toTopOf="@+id/img_icon_list" /> | ||
28 | 75 | ||
29 | -</androidx.constraintlayout.widget.ConstraintLayout> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
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 | ... | ... |
app/src/main/res/layout/rv_item_device.xml
0 → 100644
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> | ... | ... |
-
Please register or login to post a comment