import android.os.Handler;
import android.os.UserHandle;
import android.os.UserManager;
-import android.support.design.widget.FloatingActionButton;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.graphics.ColorUtils;
import com.farmerbb.taskbar.util.CompatUtils;
import com.farmerbb.taskbar.util.DesktopIconInfo;
import com.farmerbb.taskbar.util.DisplayInfo;
+import com.farmerbb.taskbar.util.FABWrapper;
import com.farmerbb.taskbar.util.FreeformHackHelper;
import com.farmerbb.taskbar.util.IconCache;
import com.farmerbb.taskbar.util.LauncherHelper;
private FrameLayout layout;
private GridLayout desktopIcons;
- private FloatingActionButton fab;
+ private FABWrapper fab;
private boolean forceTaskbarStart = false;
private AlertDialog dialog;
private void initDesktopIcons() {
desktopIcons = new GridLayout(this);
- fab = new FloatingActionButton(this);
+ fab = new FABWrapper(this);
updateMargins();
refreshDesktopIcons();
fab.setImageResource(R.drawable.ic_done_black_24dp);
- fab.setOnClickListener(v -> {
+ fab.view.setOnClickListener(v -> {
iconArrangeMode = false;
fab.hide();
refreshDesktopIcons();
if(!iconArrangeMode) fab.hide();
layout.addView(desktopIcons, 0);
- layout.addView(fab, 1);
+ layout.addView(fab.view, 1);
}
private void refreshDesktopIcons() {
return;
}
- fab.setBackgroundTintList(
+ fab.view.setBackgroundTintList(
ColorStateList.valueOf(ColorUtils.setAlphaComponent(U.getAccentColor(this), 255)));
iconArrangeMode = true;
params2.gravity = Gravity.BOTTOM | Gravity.END;
params2.setMargins(left, top, right, bottom);
- fab.setLayoutParams(params2);
+ fab.view.setLayoutParams(params2);
}
private int getIndex(DesktopIconInfo info) {
--- /dev/null
+/* Copyright 2019 Braden Farmer
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.farmerbb.taskbar.util;
+
+import android.content.Context;
+import android.support.design.widget.FloatingActionButton;
+import android.support.v4.content.ContextCompat;
+import android.view.View;
+import android.widget.ImageView;
+
+import com.farmerbb.taskbar.BuildConfig;
+import com.farmerbb.taskbar.R;
+
+public class FABWrapper {
+ public View view;
+
+ public FABWrapper(Context context) {
+ view = !context.getPackageName().equals(BuildConfig.ANDROIDX86_APPLICATION_ID)
+ ? new ImageView(context)
+ : new FloatingActionButton(context);
+
+ if(view instanceof ImageView) {
+ view.setBackground(ContextCompat.getDrawable(context, R.drawable.tb_circle));
+
+ int padding = context.getResources().getDimensionPixelSize(R.dimen.tb_fake_fab_padding);
+ view.setPadding(padding, padding, padding, padding);
+ }
+ }
+
+ public void setImageResource(int resource) {
+ if(view instanceof FloatingActionButton)
+ ((FloatingActionButton) view).setImageResource(resource);
+ else if(view instanceof ImageView)
+ ((ImageView) view).setImageResource(resource);
+ }
+
+ public void show() {
+ if(view instanceof FloatingActionButton)
+ ((FloatingActionButton) view).show();
+ else if(view instanceof ImageView)
+ view.setVisibility(View.VISIBLE);
+ }
+
+ public void hide() {
+ if(view instanceof FloatingActionButton)
+ ((FloatingActionButton) view).hide();
+ else if(view instanceof ImageView)
+ view.setVisibility(View.GONE);
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="oval">
+ <solid android:color="@android:color/white" />
+ <size
+ android:height="56dp"
+ android:width="56dp" />
+</shape>
\ No newline at end of file
<dimen name="caption_offset">48dp</dimen>
<dimen name="desktop_icon_fab_margin">16dp</dimen>
<dimen name="systray_size">180dp</dimen>
+ <dimen name="tb_fake_fab_padding">16dp</dimen>
</resources>