From 0732dd598172a00a295b6904b70fb683bb96c280 Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 28 Dec 2016 04:13:31 +0800 Subject: [PATCH 1/3] Broken minidrawer draft --- build.sbt | 1 + src/main/res/layout/layout_profiles_item.xml | 2 +- src/main/res/values/dimen.xml | 1 + .../com/github/shadowsocks/MainActivity.scala | 24 +++++++++++++++++-- .../github/shadowsocks/ToolbarFragment.scala | 4 +++- 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/build.sbt b/build.sbt index afb1f610..3f87c78c 100644 --- a/build.sbt +++ b/build.sbt @@ -44,6 +44,7 @@ libraryDependencies ++= "com.google.android.gms" % "play-services-analytics" % "10.0.1" :: "com.google.android.gms" % "play-services-gcm" % "10.0.1" :: "com.j256.ormlite" % "ormlite-android" % "5.0" :: + "com.mikepenz" % "crossfader" % "1.5.0" :: "com.mikepenz" % "fastadapter" % "2.1.5" :: "com.mikepenz" % "iconics-core" % "2.8.2" :: "com.mikepenz" % "materialdrawer" % "5.8.1" :: diff --git a/src/main/res/layout/layout_profiles_item.xml b/src/main/res/layout/layout_profiles_item.xml index 2a0c6ebd..8bb44a46 100644 --- a/src/main/res/layout/layout_profiles_item.xml +++ b/src/main/res/layout/layout_profiles_item.xml @@ -11,7 +11,7 @@ android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:layout_gravity="center_horizontal" - app:bounded_width="480dp" + app:bounded_width="@dimen/profile_item_max_width" android:id="@+id/indicator"> + 480dp -44dp diff --git a/src/main/scala/com/github/shadowsocks/MainActivity.scala b/src/main/scala/com/github/shadowsocks/MainActivity.scala index 4a9eab45..160f7b6b 100644 --- a/src/main/scala/com/github/shadowsocks/MainActivity.scala +++ b/src/main/scala/com/github/shadowsocks/MainActivity.scala @@ -45,6 +45,9 @@ import com.github.shadowsocks.ShadowsocksApplication.app import com.github.shadowsocks.aidl.IShadowsocksServiceCallback import com.github.shadowsocks.utils.CloseUtils.autoDisconnect import com.github.shadowsocks.utils._ +import com.mikepenz.crossfader.Crossfader +import com.mikepenz.crossfader.view.CrossFadeSlidingPaneLayout +import com.mikepenz.materialdrawer.interfaces.ICrossfader import com.mikepenz.materialdrawer.model.PrimaryDrawerItem import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem import com.mikepenz.materialdrawer.{Drawer, DrawerBuilder} @@ -67,6 +70,7 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe private val handler = new Handler() private var fab: FloatingActionButton = _ private var fabProgressCircle: FABProgressCircle = _ + private var crossfader: Crossfader[CrossFadeSlidingPaneLayout] = _ var drawer: Drawer = _ private var testCount: Int = _ @@ -173,8 +177,9 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe override def onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) setContentView(R.layout.layout_main) - drawer = new DrawerBuilder() + val drawerBuilder = new DrawerBuilder() .withActivity(this) + .withTranslucentStatusBar(true) .withHeader(R.layout.layout_header) .addDrawerItems( new PrimaryDrawerItem() @@ -204,7 +209,21 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe .withOnDrawerItemClickListener(this) .withActionBarDrawerToggle(true) .withSavedInstance(savedInstanceState) - .build() + val miniDrawerWidth = getResources.getDimension(R.dimen.material_mini_drawer_item) + if (getResources.getDisplayMetrics.widthPixels >= + getResources.getDimension(R.dimen.profile_item_max_width) + miniDrawerWidth) { + drawer = drawerBuilder.withGenerateMiniDrawer(true).buildView() + crossfader = new Crossfader[CrossFadeSlidingPaneLayout]() + crossfader.withContent(findViewById(android.R.id.content)) + .withFirst(drawer.getSlider, getResources.getDimensionPixelSize(R.dimen.material_drawer_width)) + .withSecond(drawer.getMiniDrawer.build(this), miniDrawerWidth.toInt) + .withSavedInstance(savedInstanceState) + .build() + drawer.getMiniDrawer.withCrossFader(new ICrossfader { // a wrapper is needed + def isCrossfaded: Boolean = crossfader.isCrossFaded + def crossfade(): Unit = crossfader.crossFade() + }) + } else drawer = drawerBuilder.build() val header = drawer.getHeader val title = header.findViewById(R.id.drawer_title).asInstanceOf[TextView] @@ -368,6 +387,7 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe override def onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) drawer.saveInstanceState(outState) + if (crossfader != null) crossfader.saveInstanceState(outState) } override def onDestroy() { diff --git a/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala b/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala index c76fefe6..54d71b1e 100644 --- a/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala +++ b/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala @@ -32,7 +32,9 @@ class ToolbarFragment extends Fragment { super.onViewCreated(view, savedInstanceState) toolbar = view.findViewById(R.id.toolbar).asInstanceOf[Toolbar] val activity = getActivity.asInstanceOf[MainActivity] - activity.drawer.setToolbar(activity, toolbar, true) + try activity.drawer.setToolbar(activity, toolbar, true) catch { + case _: Exception => // ignore for now + } } def onTrafficUpdated(txRate: Long, rxRate: Long, txTotal: Long, rxTotal: Long): Unit = () From b069b3e003289dbb939ef956fadef6a0155833d6 Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 28 Dec 2016 05:01:03 +0800 Subject: [PATCH 2/3] Don't setToolbar in minidrawer mode --- src/main/scala/com/github/shadowsocks/MainActivity.scala | 2 +- src/main/scala/com/github/shadowsocks/ToolbarFragment.scala | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/scala/com/github/shadowsocks/MainActivity.scala b/src/main/scala/com/github/shadowsocks/MainActivity.scala index 160f7b6b..6d7d48bb 100644 --- a/src/main/scala/com/github/shadowsocks/MainActivity.scala +++ b/src/main/scala/com/github/shadowsocks/MainActivity.scala @@ -70,7 +70,7 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe private val handler = new Handler() private var fab: FloatingActionButton = _ private var fabProgressCircle: FABProgressCircle = _ - private var crossfader: Crossfader[CrossFadeSlidingPaneLayout] = _ + var crossfader: Crossfader[CrossFadeSlidingPaneLayout] = _ var drawer: Drawer = _ private var testCount: Int = _ diff --git a/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala b/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala index 54d71b1e..5810aefd 100644 --- a/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala +++ b/src/main/scala/com/github/shadowsocks/ToolbarFragment.scala @@ -32,9 +32,7 @@ class ToolbarFragment extends Fragment { super.onViewCreated(view, savedInstanceState) toolbar = view.findViewById(R.id.toolbar).asInstanceOf[Toolbar] val activity = getActivity.asInstanceOf[MainActivity] - try activity.drawer.setToolbar(activity, toolbar, true) catch { - case _: Exception => // ignore for now - } + if (activity.crossfader == null) activity.drawer.setToolbar(activity, toolbar, true) } def onTrafficUpdated(txRate: Long, rxRate: Long, txTotal: Long, rxTotal: Long): Unit = () From da8a65993a8823a18abe3478678d7c4b238ec941 Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 28 Dec 2016 05:05:19 +0800 Subject: [PATCH 3/3] Fix another naming conflict in @+id/content --- src/main/res/layout/layout_main.xml | 2 +- src/main/scala/com/github/shadowsocks/MainActivity.scala | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/res/layout/layout_main.xml b/src/main/res/layout/layout_main.xml index 1ca4a71d..b2bf4ebb 100644 --- a/src/main/res/layout/layout_main.xml +++ b/src/main/res/layout/layout_main.xml @@ -3,7 +3,7 @@ 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:ignore="UnknownIdInLayout" android:clipChildren="false"> - diff --git a/src/main/scala/com/github/shadowsocks/MainActivity.scala b/src/main/scala/com/github/shadowsocks/MainActivity.scala index 6d7d48bb..2fc2b788 100644 --- a/src/main/scala/com/github/shadowsocks/MainActivity.scala +++ b/src/main/scala/com/github/shadowsocks/MainActivity.scala @@ -146,7 +146,7 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe rxText.setText(TrafficMonitor.formatTraffic(rxTotal)) txRateText.setText(TrafficMonitor.formatTraffic(txRate) + "/s") rxRateText.setText(TrafficMonitor.formatTraffic(rxRate) + "/s") - val child = getFragmentManager.findFragmentById(R.id.content).asInstanceOf[ToolbarFragment] + val child = getFragmentManager.findFragmentById(R.id.fragment_holder).asInstanceOf[ToolbarFragment] if (child != null) child.onTrafficUpdated(txRate, rxRate, txTotal, rxTotal) } @@ -337,7 +337,7 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe private def displayFragment(fragment: ToolbarFragment) { currentFragment = fragment - getFragmentManager.beginTransaction().replace(R.id.content, fragment).commitAllowingStateLoss() + getFragmentManager.beginTransaction().replace(R.id.fragment_holder, fragment).commitAllowingStateLoss() drawer.closeDrawer() }