From b8b81df4d22f537e51553c78fdeafe51dd64f28d Mon Sep 17 00:00:00 2001 From: danijoo Date: Thu, 31 Dec 2015 19:43:31 +0100 Subject: [PATCH] FAB and notification creation fragment --- .../notificationlogger/MainActivity.java | 54 ++++++++++++++++-- .../NotificationCreationFragment.java | 31 ++++++++++ .../NotificationListFragment.java | 31 ++++++++++ .../main/res/drawable-hdpi/ic_action_add.png | Bin 0 -> 139 bytes .../main/res/drawable-mdpi/ic_action_add.png | Bin 0 -> 121 bytes .../main/res/drawable-xhdpi/ic_action_add.png | Bin 0 -> 174 bytes .../res/drawable-xxhdpi/ic_action_add.png | Bin 0 -> 246 bytes .../res/drawable-xxxhdpi/ic_action_add.png | Bin 0 -> 477 bytes app/src/main/res/layout/main_activity.xml | 31 +++++++++- app/src/main/res/layout/toolbar.xml | 3 +- app/src/main/res/values/strings.xml | 2 + 11 files changed, 142 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/net/headlezz/notificationlogger/NotificationCreationFragment.java create mode 100644 app/src/main/java/net/headlezz/notificationlogger/NotificationListFragment.java create mode 100644 app/src/main/res/drawable-hdpi/ic_action_add.png create mode 100644 app/src/main/res/drawable-mdpi/ic_action_add.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_action_add.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_add.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_action_add.png diff --git a/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java b/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java index b4ab180..fbd0349 100644 --- a/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java +++ b/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java @@ -3,35 +3,77 @@ package net.headlezz.notificationlogger; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +import android.view.Menu; import android.view.MenuItem; +import android.view.View; import butterknife.Bind; import butterknife.ButterKnife; -public class MainActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener { +public class MainActivity extends AppCompatActivity { @Bind(R.id.toolbar) Toolbar mToolbar; + @Bind(R.id.main_menu_fab_add_notification) + FloatingActionButton mFAB; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); ButterKnife.bind(this); - mToolbar.inflateMenu(R.menu.main_activity); - mToolbar.setTitle(getString(R.string.app_name)); - mToolbar.setOnMenuItemClickListener(this); + setSupportActionBar(mToolbar); + + mFAB.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + openNotificationCreationScreen(); + } + }); + + if(getSupportFragmentManager().findFragmentById(R.id.main_menu_fragment_container) == null) { + getSupportFragmentManager().beginTransaction() + .add(R.id.main_menu_fragment_container, new NotificationListFragment()) + .commit(); + } } @Override - public boolean onMenuItemClick(MenuItem item) { + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_activity, menu); + return super.onCreateOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == R.id.menu_settings) { Intent intent = new Intent(this, PreferenceActivity.class); startActivity(intent); + return true; } - return false; + return super.onOptionsItemSelected(item); + } + + + @SuppressWarnings("ConstantConditions") + void openNotificationCreationScreen() { + getSupportFragmentManager().beginTransaction() + .replace(R.id.main_menu_fragment_container, new NotificationCreationFragment()) + .addToBackStack(NotificationCreationFragment.class.getSimpleName()) + .commit(); + mFAB.setVisibility(View.GONE); + } + + @Override + public void onBackPressed() { + // make fab visible if we come back to first fragment + if(getSupportFragmentManager().getBackStackEntryCount() == 1) + mFAB.setVisibility(View.VISIBLE); + super.onBackPressed(); } } diff --git a/app/src/main/java/net/headlezz/notificationlogger/NotificationCreationFragment.java b/app/src/main/java/net/headlezz/notificationlogger/NotificationCreationFragment.java new file mode 100644 index 0000000..024841f --- /dev/null +++ b/app/src/main/java/net/headlezz/notificationlogger/NotificationCreationFragment.java @@ -0,0 +1,31 @@ +package net.headlezz.notificationlogger; + +import android.app.Activity; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class NotificationCreationFragment extends Fragment { + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + TextView textView = new TextView(getContext()); + textView.setGravity(Gravity.CENTER); + textView.setText(getClass().getSimpleName()); + return textView; + } + + @SuppressWarnings("ConstantConditions") + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + ((AppCompatActivity) activity).getSupportActionBar().setTitle(getString(R.string.title_create_notification)); + } +} diff --git a/app/src/main/java/net/headlezz/notificationlogger/NotificationListFragment.java b/app/src/main/java/net/headlezz/notificationlogger/NotificationListFragment.java new file mode 100644 index 0000000..31ced62 --- /dev/null +++ b/app/src/main/java/net/headlezz/notificationlogger/NotificationListFragment.java @@ -0,0 +1,31 @@ +package net.headlezz.notificationlogger; + +import android.app.Activity; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class NotificationListFragment extends Fragment { + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + TextView textView = new TextView(getContext()); + textView.setGravity(Gravity.CENTER); + textView.setText(getClass().getSimpleName()); + return textView; + } + + @SuppressWarnings("ConstantConditions") + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + ((AppCompatActivity) activity).getSupportActionBar().setTitle(getString(R.string.app_name)); + } +} diff --git a/app/src/main/res/drawable-hdpi/ic_action_add.png b/app/src/main/res/drawable-hdpi/ic_action_add.png new file mode 100644 index 0000000000000000000000000000000000000000..ca13239a7d6102d789ddef86e219ccb44ae56950 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtAWs*^kcwMxZ*1gcP~dQN{1*Q! zJNXeqltbT>uQ86!sw>Zl0#yOQ0ha^w=0KPX47-@$wbrp42tDXvgbLY|Ls;{+F)({= UU3IEMqYNbD>FVdQ&MBb@0GInDp#T5? literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_action_add.png b/app/src/main/res/drawable-mdpi/ic_action_add.png new file mode 100644 index 0000000000000000000000000000000000000000..06ff3a5c05c9103d79a85b2368b6c394aad5561a GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz2TvErkcwMxuNiVNDDW^J`1AjA zC`)`mz!YhtWqTJo2Z!#Q2~@S^)aH4nObiSU!Vkn%w+?whJ@DX0aYP^1;rm^_JRyR0TuEI@ej&?LIo_0C=x)~)y|$5;L4k+);G6wh z5*aiC9b!J#KFJR9^s1F)WME)qP+(wSVQ64r5MW?nVsKz!-~b60T)+7FO(@V1Vt@tv w2I&`H;VSnmgfsCoP;69SU`SzsIi=yh)J*GZhgk)@&x4HcboFyt=akR{0JTadvj6}9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_add.png b/app/src/main/res/drawable-xxxhdpi/ic_action_add.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2d21735628e7772763b1e5b6a2c6ca5787c60f GIT binary patch literal 477 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU|izq;uunK>+K!iyruw=hQQf7 z_^k!PE`{zEN?GvR;Nq8=cl>;6Ed)R8E1qP%(nRsoPv&PEZvwR=Kuy#7PQ{J6Gv6E4 z&U}~nt0L!h=BeMO_RBwTo>@F|;~B%Wp8c{(((hS3nO{71h@XGPa+{#TC5BxUTkrFK zdz-lKV}yFc9Yz^#Mj2KG21X7C1||mv4hBXA29^c}0R|=!^6uC;!RTf1)c&1_l%h@&O^JCwF>F<6CwRQ|h;KRi_#^41OoF~#hg@A-TUHx3vIVCg!0J_Do AA^-pY literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index 9a9d3dd..aa59ec8 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -1,8 +1,33 @@ - - + + + - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/toolbar.xml b/app/src/main/res/layout/toolbar.xml index 0efc824..6ee75d9 100644 --- a/app/src/main/res/layout/toolbar.xml +++ b/app/src/main/res/layout/toolbar.xml @@ -7,4 +7,5 @@ app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" /> + android:layout_height="?attr/actionBarSize" + app:layout_scrollFlags="scroll|enterAlways"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 52e58ae..dd48606 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,4 +13,6 @@ Remove all logged notifications Export to sdcard About + FAB: Create notification + Create notification