From b9f8f9bbd7267f741b3b8a3c8f0ab36e799b3cab Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Mon, 25 Sep 2017 13:40:34 +0800 Subject: [PATCH] new ui for NewFileDialog (change to FloatingActionsMenu) --- app/build.gradle | 4 +- .../ui/common/ScriptOperations.java | 2 +- .../ui/main/FloatingActionMenu.java | 153 ++++++++++++++++++ .../scriptdroid/ui/main/MainActivity.java | 10 +- .../ui/main/NewFileDialogBuilder.java | 64 -------- .../ui/main/ViewPagerFragment.java | 5 +- .../ui/main/drawer/DrawerFragment.java | 3 + .../ui/main/scripts/MyScriptListFragment.java | 94 ++++++++++- .../floating_action_menu_label_bg.xml | 7 + .../drawable/ic_floating_action_menu_dir.png | Bin 0 -> 490 bytes .../drawable/ic_floating_action_menu_file.png | Bin 0 -> 1489 bytes .../drawable/ic_floating_action_menu_open.png | Bin 0 -> 2503 bytes app/src/main/res/layout/activity_main.xml | 26 ++- .../res/layout/item_floating_action_menu.xml | 32 ++++ app/src/main/res/layout/new_file_dialog.xml | 1 + app/src/main/res/values/strings.xml | 2 +- 16 files changed, 318 insertions(+), 85 deletions(-) create mode 100644 app/src/main/java/com/stardust/scriptdroid/ui/main/FloatingActionMenu.java delete mode 100644 app/src/main/java/com/stardust/scriptdroid/ui/main/NewFileDialogBuilder.java create mode 100644 app/src/main/res/drawable/floating_action_menu_label_bg.xml create mode 100644 app/src/main/res/drawable/ic_floating_action_menu_dir.png create mode 100644 app/src/main/res/drawable/ic_floating_action_menu_file.png create mode 100644 app/src/main/res/drawable/ic_floating_action_menu_open.png create mode 100644 app/src/main/res/layout/item_floating_action_menu.xml diff --git a/app/build.gradle b/app/build.gradle index 8182adbc..78b3724b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.stardust.scriptdroid" minSdkVersion 17 targetSdkVersion 23 - versionCode 201 - versionName "3.0.0 Alpha2" + versionCode 202 + versionName "3.0.0 Alpha3" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true ndk { diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java b/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java index 5104caa5..10dd170e 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java @@ -55,7 +55,7 @@ public class ScriptOperations { } public ScriptOperations(Context context, View view) { - this(context, view, MyScriptListFragment.getCurrentDirectory()); + this(context, view, StorageFileProvider.DEFAULT_DIRECTORY); } public void newScriptFileForScript(final String script) { diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/FloatingActionMenu.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/FloatingActionMenu.java new file mode 100644 index 00000000..05a8ccd6 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/FloatingActionMenu.java @@ -0,0 +1,153 @@ +package com.stardust.scriptdroid.ui.main; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.content.Context; +import android.support.annotation.AttrRes; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.design.widget.FloatingActionButton; +import android.support.v4.view.animation.FastOutSlowInInterpolator; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.animation.Interpolator; +import android.widget.FrameLayout; +import android.widget.TextView; + +import com.stardust.scriptdroid.R; +import com.stardust.scriptdroid.ui.common.ScriptOperations; + +import io.reactivex.Observable; +import io.reactivex.subjects.PublishSubject; + +/** + * Created by Stardust on 2017/9/24. + */ + +public class FloatingActionMenu extends FrameLayout implements View.OnClickListener { + + public interface OnFloatingActionButtonClickListener { + void onClick(FloatingActionButton button, int pos); + } + + private static final int[] ICONS = { + R.drawable.ic_floating_action_menu_dir, + R.drawable.ic_floating_action_menu_file, + R.drawable.ic_floating_action_menu_open}; + private static final int[] LABELS = {R.string.text_directory, R.string.text_file, R.string.text_import}; + private TextView[] mLabels; + private FloatingActionButton[] mFabs; + private View[] mFabContainers; + private boolean mExpanded = false; + private int mInterval = 30; + private int mDuration = 300; + private final Interpolator mInterpolator = new FastOutSlowInInterpolator(); + private final PublishSubject mState = PublishSubject.create(); + private OnFloatingActionButtonClickListener mOnFloatingActionButtonClickListener; + + public FloatingActionMenu(@NonNull Context context) { + super(context); + init(); + } + + public FloatingActionMenu(@NonNull Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + init(); + } + + public FloatingActionMenu(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + private void init() { + buildFabs(ICONS, LABELS); + } + + public boolean isExpanded() { + return mExpanded; + } + + public void expand() { + setVisibility(VISIBLE); + int h = mFabs[0].getHeight(); + for (int i = 0; i < mFabContainers.length; i++) { + animateY(mFabContainers[i], -(h + mInterval) * (i + 1), null); + } + mExpanded = true; + mState.onNext(true); + } + + + private void animateY(View view, float y, Animator.AnimatorListener l) { + view.animate() + .translationY(y) + .setDuration(mDuration) + .setInterpolator(mInterpolator) + .setListener(l) + .start(); + } + + public void collapse() { + animateY(mFabContainers[0], 0, new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + setVisibility(INVISIBLE); + } + }); + for (int i = 1; i < mFabContainers.length; i++) { + animateY(mFabContainers[i], 0, null); + } + mExpanded = false; + mState.onNext(false); + } + + private void buildFabs(int[] icons, int[] labels) { + if (icons.length != labels.length) + throw new IllegalArgumentException("icons.length = " + icons.length + " is not equal to labels.length = " + labels.length); + mFabs = new FloatingActionButton[icons.length]; + mLabels = new TextView[icons.length]; + mFabContainers = new View[icons.length]; + LayoutInflater inflater = LayoutInflater.from(getContext()); + for (int i = 0; i < icons.length; i++) { + mFabContainers[i] = inflater.inflate(R.layout.item_floating_action_menu, this, false); + mFabs[i] = (FloatingActionButton) mFabContainers[i].findViewById(R.id.floating_action_button); + mFabs[i].setImageResource(icons[i]); + mFabs[i].setOnClickListener(this); + mFabs[i].setTag(i); + mLabels[i] = (TextView) mFabContainers[i].findViewById(R.id.label); + mLabels[i].setText(labels[i]); + addView(mFabContainers[i]); + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + // Call super.onMeasure to measure children and width + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + if (heightMode == MeasureSpec.EXACTLY) { + return; + } + int h = mFabContainers[0].getMeasuredHeight(); + setMeasuredDimension(getMeasuredWidth(), (h + mInterval) * mFabs.length + h); + } + + public PublishSubject getState() { + return mState; + } + + @Override + public void onClick(View v) { + collapse(); + if (mOnFloatingActionButtonClickListener != null) { + mOnFloatingActionButtonClickListener.onClick((FloatingActionButton) v, (int) v.getTag()); + } + + } + + public void setOnFloatingActionButtonClickListener(OnFloatingActionButtonClickListener onFloatingActionButtonClickListener) { + mOnFloatingActionButtonClickListener = onFloatingActionButtonClickListener; + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java index 7b04dfa0..edba880c 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java @@ -154,17 +154,23 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega public void OnInstantiate(int pos, Fragment fragment) { ((ViewPagerFragment) fragment).setFab(mFab); if (pos == mViewPager.getCurrentItem()) { - ((ViewPagerFragment) fragment).onPageSelected(); + ((ViewPagerFragment) fragment).onPageShow(); } } }); mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { + private ViewPagerFragment mPreviousFragment; + @Override public void onPageSelected(int position) { Fragment fragment = mPagerAdapter.getStoredFragment(position); if (fragment == null) return; - ((ViewPagerFragment) fragment).onPageSelected(); + if (mPreviousFragment != null) { + mPreviousFragment.onPageHide(); + } + mPreviousFragment = (ViewPagerFragment) fragment; + mPreviousFragment.onPageShow(); } }); } diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/NewFileDialogBuilder.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/NewFileDialogBuilder.java deleted file mode 100644 index 126eed8d..00000000 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/NewFileDialogBuilder.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.stardust.scriptdroid.ui.main; - -import android.content.Context; -import android.view.View; - -import com.github.aakira.expandablelayout.ExpandableRelativeLayout; -import com.stardust.scriptdroid.R; -import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; - -/** - * Created by Stardust on 2017/8/25. - */ - -public class NewFileDialogBuilder extends ThemeColorMaterialDialogBuilder { - - @BindView(R.id.layout_new_file) - ExpandableRelativeLayout mLayoutNewFile; - - @BindView(R.id.layout_import) - ExpandableRelativeLayout mLayoutImport; - - ExpandableRelativeLayout mExpandedLayout; - - - public NewFileDialogBuilder(Context context) { - super(context); - View view = View.inflate(context, R.layout.new_file_dialog, null); - customView(view, true); - title(R.string.text_new); - positiveText(R.string.ok); - negativeText(R.string.cancel); - ButterKnife.bind(this, view); - mExpandedLayout = mLayoutNewFile; - } - - @OnClick(R.id.option_new_file) - void expandLayoutNewFile() { - if (mExpandedLayout != mLayoutNewFile) { - if(mExpandedLayout != null){ - mExpandedLayout.collapse(); - } - mLayoutNewFile.expand(); - mExpandedLayout = mLayoutNewFile; - } - } - - - @OnClick(R.id.option_import) - void expandLayoutImport() { - if (mExpandedLayout != mLayoutImport) { - if(mExpandedLayout != null){ - mExpandedLayout.collapse(); - } - mLayoutImport.expand(); - mExpandedLayout = mLayoutImport; - } - } - -} - diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/ViewPagerFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/ViewPagerFragment.java index 5f6705df..1c8716df 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/ViewPagerFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/ViewPagerFragment.java @@ -32,7 +32,7 @@ public abstract class ViewPagerFragment extends Fragment { protected abstract void onFabClick(FloatingActionButton fab); - public void onPageSelected() { + public void onPageShow() { if (mFabRotation == ROTATION_GONE) { if (mFab.getVisibility() == View.VISIBLE) { mFab.hide(); @@ -54,4 +54,7 @@ public abstract class ViewPagerFragment extends Fragment { } + public void onPageHide() { + + } } diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java index e944fc34..c229ad1a 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java @@ -244,6 +244,9 @@ public class DrawerFragment extends android.support.v4.app.Fragment { @Override public void onError(@io.reactivex.annotations.NonNull Throwable e) { + if(isHidden()){ + return; + } Toast.makeText(App.getApp(), e.getMessage(), Toast.LENGTH_SHORT).show(); mConnectionItem.getSwitchCompat().setChecked(false, false); mConnectionItem.setProgress(false); diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java index fa60a1ed..c74d9781 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java @@ -1,5 +1,6 @@ package com.stardust.scriptdroid.ui.main.scripts; +import android.app.Activity; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; @@ -12,9 +13,12 @@ import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.script.ScriptFile; import com.stardust.scriptdroid.script.Scripts; import com.stardust.scriptdroid.script.StorageFileProvider; +import com.stardust.scriptdroid.tool.SimpleObserver; import com.stardust.scriptdroid.ui.common.ScriptLoopDialog; -import com.stardust.scriptdroid.ui.main.NewFileDialogBuilder; +import com.stardust.scriptdroid.ui.common.ScriptOperations; +import com.stardust.scriptdroid.ui.main.FloatingActionMenu; import com.stardust.scriptdroid.ui.main.ViewPagerFragment; +import com.stardust.util.BackPressedHandler; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EFragment; @@ -26,6 +30,7 @@ import butterknife.OnClick; import butterknife.Optional; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; @@ -33,12 +38,10 @@ import io.reactivex.schedulers.Schedulers; * Created by Stardust on 2017/3/13. */ @EFragment(R.layout.fragment_my_script_list) -public class MyScriptListFragment extends ViewPagerFragment { +public class MyScriptListFragment extends ViewPagerFragment implements BackPressedHandler, FloatingActionMenu.OnFloatingActionButtonClickListener { private static final String TAG = "MyScriptListFragment"; - private static ScriptFile sCurrentDirectory = StorageFileProvider.DEFAULT_DIRECTORY; - public MyScriptListFragment() { super(0); } @@ -46,6 +49,8 @@ public class MyScriptListFragment extends ViewPagerFragment { @ViewById(R.id.script_file_list) ScriptListView mScriptFileList; + private FloatingActionMenu mFloatingActionMenu; + @AfterViews void setUpViews() { mScriptFileList.setOnScriptFileClickListener(new ScriptListView.OnScriptFileClickListener() { @@ -56,14 +61,87 @@ public class MyScriptListFragment extends ViewPagerFragment { }); } + @Override + public void onResume() { + super.onResume(); + ((BackPressedHandler.HostActivity) getActivity()) + .getBackPressedObserver() + .registerHandlerAtFront(this); + } - public static ScriptFile getCurrentDirectory() { - return sCurrentDirectory; + @Override + public void onPause() { + super.onPause(); + ((BackPressedHandler.HostActivity) getActivity()) + .getBackPressedObserver() + .unregisterHandler(this); } @Override protected void onFabClick(FloatingActionButton fab) { - new NewFileDialogBuilder(getContext()) - .show(); + initFloatingActionMenuIfNeeded(fab); + if (mFloatingActionMenu.isExpanded()) { + mFloatingActionMenu.collapse(); + } else { + mFloatingActionMenu.expand(); + + } + } + + private void initFloatingActionMenuIfNeeded(final FloatingActionButton fab) { + if (mFloatingActionMenu != null) + return; + mFloatingActionMenu = ((FloatingActionMenu) getActivity().findViewById(R.id.floating_action_menu)); + mFloatingActionMenu.getState() + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SimpleObserver() { + @Override + public void onNext(@io.reactivex.annotations.NonNull Boolean expanding) { + fab.animate() + .rotation(expanding ? 45 : 0) + .setDuration(300) + .start(); + } + }); + mFloatingActionMenu.setOnFloatingActionButtonClickListener(this); + } + + @Override + public boolean onBackPressed(Activity activity) { + if (mFloatingActionMenu != null && mFloatingActionMenu.isExpanded()) { + mFloatingActionMenu.expand(); + return true; + } + return false; + } + + @Override + public void onPageHide() { + if (mFloatingActionMenu != null && mFloatingActionMenu.isExpanded()) { + mFloatingActionMenu.collapse(); + } + } + + @Override + public void onDetach() { + super.onDetach(); + mFloatingActionMenu.setOnFloatingActionButtonClickListener(null); + } + + @Override + public void onClick(FloatingActionButton button, int pos) { + switch (pos) { + case 0: + new ScriptOperations(getContext(), mScriptFileList, mScriptFileList.getCurrentDirectory()) + .newDirectory(); + break; + case 1: + new ScriptOperations(getContext(), mScriptFileList, mScriptFileList.getCurrentDirectory()) + .newScriptFile(); + break; + case 2: + break; + + } } } diff --git a/app/src/main/res/drawable/floating_action_menu_label_bg.xml b/app/src/main/res/drawable/floating_action_menu_label_bg.xml new file mode 100644 index 00000000..38a3db5e --- /dev/null +++ b/app/src/main/res/drawable/floating_action_menu_label_bg.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_floating_action_menu_dir.png b/app/src/main/res/drawable/ic_floating_action_menu_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..5973d3d9d1c47508e8882be83b0e92688e17c013 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVBF~G;uum9_cr=q;9&!SJ8K!d z7BElZQjl%oTfpSOdVw*3aS8*Nqrs@P-p|2VwiE$vZ1|a^KTXd^`8?9 zd;AvuXGlnMXSip*_wM@3vz{!9@A#L0oM8uZ!A<*;ekJjShDTy)+mM_ zX_6-^&oWfJTjwBO?zp0pao+a%?5AfjRw(X#o|~22z#zc9g|&q3g}@cl9nB5v4hBfi zjy%b)w9_|0BHqdY2|f^KegA1*F*k>@2qd`UE?+$34&562 z=~D0JEqT5@cjJ4;c7{D|-xpk2!`1tlH9_o}y1A(Ld4?V8KlBwUKAnz;%!}T+N8Hys z_RlQ~y)9lV+be&sblj7<%IA7~T9C8d){3M9SHg6@)*NlP(&48&Pr_iUsJHEX-u05d V96i-`uK~s(gQu&X%Q~loCIFi<$i@Hw literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_floating_action_menu_file.png b/app/src/main/res/drawable/ic_floating_action_menu_file.png new file mode 100644 index 0000000000000000000000000000000000000000..4c4a686fc3c4f65bc4ed705437a5c8aae422731b GIT binary patch literal 1489 zcmeH{{a2F(6vyxLvcX`;CYUG#1Rg;R1S5)=3WM=h22T=0AlN8`6PQenI27az5}bjk zBLV4PNQZ!U5k2lWiH&D1B|u)x5K&@NXGaudaWt@a>8Zb>ANt{b?mg#w&%O72f4C>e z=m;CD^;Q626BQ}kO=tN(VacSa-wBnVHz3NRG2-7*$ueLg6ir|Hm0z z`!IJz#SY)quo|~!=-hPSZ9*@+wWXLi8?@)sPb`%Sc3gp@w~z?2(uEV5-;@+LD>@(d z+pN2FMppQT=Go3WpHB^qXBbpH6EZ_uy5d;8aGD_nYCnush*_S4qB()GDV?u*q??X= z-K{k76nYn=$rrmCa+h)GY193NrS=KYTHs!CqF5knFPJ;xRUkJdy{G*$9k>TP<(1Hp zlEbml_^cP$$rWm6DgmnB#?>#{%L@6;Ob)ji7I@T9V@zl4ibbUMcFUc#y@{~h)_AQi za5U(NEzDOIh z?QdO^EVd-ee+7IeS$Ce#P+$dZ?kKhiA7SYmQv?$7nM$ISy18G}CLH5FS!* z&M<6cO7~q4>XkY6`E6Xc;Mz%eFR8THli^LOP%QFfe2*IWzy5FeppSwH+_>-QUUlAQ zC_kz&;qtkSWye+A18d|i@6I1yB3K^@=9-k1Um)d{4JOXTI-*D%nIbx}+gol6)0=nP zd=_gL@P3YXilu_{s5xXRHRbDC%8n3w?YQt7-4d?#-9?Q@BrymbAC zt+W){-V6KS?&Q6i`IQV*jOEpuPNcj#h;?4Opm5N-9^g>sa^He9o_29djFAueu_lOC e@|GXVjxI4YS!4$~@a8G{RYO!*w6G&YQv5fvB7Eoo literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_floating_action_menu_open.png b/app/src/main/res/drawable/ic_floating_action_menu_open.png new file mode 100644 index 0000000000000000000000000000000000000000..0144ab46cb8deb462ad35eda663b473c2fa04964 GIT binary patch literal 2503 zcmY*bc|6ql8~=y9lkIUKHDM`7L+ms)>*`I4Bjbnz*k>t)u zZkw#txEh3U3^f{41}R~tF+02e?H|wadj5Ex=kR806+?IwDk}~ z>^~;@oxt~722un;EYi^@27m)E|1ns>i35s)S^{KieLkMZUI?pGx}yBuCbNhwmp^Ia zG=<2Q6MHlxbIDMqeMZem!YFhX96pxsEL8a8*l6eV0{uc6qskEa?B&DGp`x0TNPXLf zu8ivv7uCH^K30u?m<7|t^xY5AH_ufWeM3QawsbPrhSyg3&YUZ8iwS&|C6h!M?SdmO z|Nr!#|8-Z#BRix>F)=V-$)#klA<_i;no$xE8#M*i;G1gL5U`f@E>&R5w^EiBh6_)qC;Z)U%6&Z;D`ogBgWE&AS@7GEE^|*))R(c8{RYgb+10}8*+#ph%C*!eKNgrS?~Ar3VyPPjN>#kjX*A8u%nc$ z4kG?2b*jRdx|lP?!TZ6e8FeSWe2O~-|?rfafT3KR}qN3qN{c#p#6-x1ZZQ8*K~ ziamcw+KF>yXaRh6Of^uHg#T8)strtF&uaugBM})b zFkRs$(L*9nKf{J$KcQw#s`03E_*e<-STL2&5bjQt9B*vs;dnZXkdo#hYZ+Zatn!dX zJ|+;15wG!P+4pZDcGGV4}3{+DJi!l$H%&M zvdXWiV-JJH8_gUA=KLJBVMr(szQL=&IYA#M_2vACaVO=l#I*%3^*v`p#}zWOVw>p# zbUSxFVgQ6kG+(5^|15e67`0OyI>)R0u)?Yi+@0P}1i4z&zTSjXoI+tmwqk@8mbj77 z^gZS;ACO5D#{9L-KHW!at@s==qEiPV4`3%?x-VaTL$sU*I|rZDTGC&Hfl_#rGZl_% zYvm&S0)#QKvG+43;V5wglX!Aqn@r@NLu^r zkTXXBbN&@)9$~CaJs;6N z-s5kcl9Ue$S`5TD5RU7w-UHw{c?vc0=tQbjg7rBBmhq}940$lu)jux@e2}&|z)+{3 zSsld7GmZkFqPF*->o=qj7urwWdf~qd-AY&#mV`s*-8&+h`WqSF_X*`?Yxi5_#Q=MU z=~39`9~NOqxhN$Q;^Yt00Aam6Z%DTc(sZP?rSTPeuYK`pfT`{+TX0p>a&OXN9r{ab zKU;p+#7i?)Sm)nS8WVc8vgPYC%(_gSHU#b205=N95Yjv~Sw>Lr^{)w~oj`HF<Kt%G=9q67WM)#Xa*7_q)OpO#Td?M9#)tH3m;%;n%9&g-zNjfXOF7W9DwuLoSPQ!bC59(=(Z0@k z{UCu|;1h~+{MjWdqD{K}J()gpg4PuRY~3^xY~)g;(5*2%e%h6Tz??@JZgH3G9*5Fh zgj5C8yW_^^+>sQDTq*cjCT_p%9>=-W9G3{*kC>-MrF3}U)u7X67I0u7dR7Jz$020X z?cB+26ZXm?nC%Z2Nc)AC`_qig7Wr@~AyrnSNBW_2zNgw2vI&$GfXxQ8yRTyvj1*w| z`IEnU6I1Lv6$#}3F}iYU4V3f07|bq8sp5^q`^qknS;59*Vdmb`F7!u&FSC2S@T!6^ zCd31dBV+_VFQ3XJ#V}t8<(WZ^DrT{m}RyjHJT657&opX%~#V$m6d3&%fFB ztSDaFG^?Boe1p`jdr- - + > + + + + + diff --git a/app/src/main/res/layout/item_floating_action_menu.xml b/app/src/main/res/layout/item_floating_action_menu.xml new file mode 100644 index 00000000..6eadaaf5 --- /dev/null +++ b/app/src/main/res/layout/item_floating_action_menu.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/new_file_dialog.xml b/app/src/main/res/layout/new_file_dialog.xml index 3ec31000..1624c434 100644 --- a/app/src/main/res/layout/new_file_dialog.xml +++ b/app/src/main/res/layout/new_file_dialog.xml @@ -31,6 +31,7 @@ android:layout_marginTop="@dimen/air_baseline" android:checked="true" android:paddingLeft="16dp" + android:button="@null" android:text="@string/text_file" android:textSize="16sp"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ebd246b7..459842cf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -236,7 +236,7 @@ 未登录 音量下键控制 其他 - 导入… + 导入 auto模式 ui模式 新建