안드로이드 앱에 Toolbar 사용하는 법을 찾아보다가 티스토리의 개발하는 두더지님의 사이트에서 toolbar의 중복코드를 줄이는 스켈레톤 구조를 찾아서 활용하고 있는 방법으로 참고의 사이트는 아래에 있다.
안드로이드 toolbar 중복 코드 지우기
포스팅 이유 서비스 앱 개발이나 토이 프로젝트를 진행하면서 빠르게 초기 스켈레톤 구조를 구성하기 위해 포스팅을 합니다. 저는 아래와 같은 상황일 때 코드를 줄이기 위해 사용합니다. 1. Acti
duzi077.tistory.com
여기에 다시 적는 것은 앱 개발에 계속활용하기 위함이고, 참고 사이트에 적용된 것은 android.support.v7.widget.Toolbar를 사용한 것이고, 이것을 androidx.appcompat.widget.Toolbar를 사용하는 것으로 바꾼것 뿐이다.
1. style.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
2. toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:background="?attr/colorPrimary">
</androidx.appcompat.widget.Toolbar>
3. activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--Custom Toolbar-->
<include layout="@layout/toolbar" />
</androidx.constraintlayout.widget.ConstraintLayout>
4. BaseActivity.java
import androidx.appcompat.widget.Toolbar;
abstract public class BaseActivity extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResource());
configureToolbar();
}
protected abstract void initLayout();
protected abstract void setDefaultSettings();
protected abstract int getLayoutResource();
protected abstract int getTitleToolBar();
private void configureToolbar() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(getTitleToolBar());
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
}
5. MainActivity.java
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initLayout();
setDefaultSettings();
}
@Override
protected void initLayout() {
}
@Override
protected void setDefaultSettings() {
}
@Override
protected int getLayoutResource() {
return R.layout.activity_main;
}
@Override
protected int getTitleToolBar() {
return R.string.app_name;
}
}
'SW 개발 > Android Java' 카테고리의 다른 글
안드로이드 앱에 Admob 광고 달기 (0) | 2020.07.19 |
---|
댓글