Replace QuickAddBar with FloatingActionButton
@ -0,0 +1,99 @@
|
||||
package com.faizmalkani.floatingactionbutton;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Display;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import org.tasks.R;
|
||||
|
||||
public class FloatingActionButton extends View {
|
||||
|
||||
private final Paint mButtonPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
private final Paint mDrawablePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
private Bitmap mBitmap;
|
||||
private int mColor;
|
||||
|
||||
public FloatingActionButton(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public FloatingActionButton(Context context, AttributeSet attributeSet) {
|
||||
this(context, attributeSet, 0);
|
||||
}
|
||||
|
||||
public FloatingActionButton(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
|
||||
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.FloatingActionButton);
|
||||
mColor = a.getColor(R.styleable.FloatingActionButton_tint, Color.WHITE);
|
||||
mButtonPaint.setStyle(Paint.Style.FILL);
|
||||
mButtonPaint.setColor(mColor);
|
||||
float radius, dx, dy;
|
||||
radius = a.getFloat(R.styleable.FloatingActionButton_shadowRadius, 10.0f);
|
||||
dx = a.getFloat(R.styleable.FloatingActionButton_shadowDx, 0.0f);
|
||||
dy = a.getFloat(R.styleable.FloatingActionButton_shadowDy, 3.5f);
|
||||
int color = a.getInteger(R.styleable.FloatingActionButton_shadowColor, Color.argb(100, 0, 0, 0));
|
||||
mButtonPaint.setShadowLayer(radius, dx, dy, color);
|
||||
|
||||
Drawable drawable = a.getDrawable(R.styleable.FloatingActionButton_drawable);
|
||||
if (null != drawable) {
|
||||
mBitmap = ((BitmapDrawable) drawable).getBitmap();
|
||||
}
|
||||
setWillNotDraw(false);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
|
||||
}
|
||||
}
|
||||
|
||||
public static int darkenColor(int color) {
|
||||
float[] hsv = new float[3];
|
||||
Color.colorToHSV(color, hsv);
|
||||
hsv[2] *= 0.8f;
|
||||
return Color.HSVToColor(hsv);
|
||||
}
|
||||
|
||||
public void setColor(int color) {
|
||||
mColor = color;
|
||||
mButtonPaint.setColor(mColor);
|
||||
invalidate();
|
||||
}
|
||||
|
||||
public void setDrawable(Drawable drawable) {
|
||||
mBitmap = ((BitmapDrawable) drawable).getBitmap();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
canvas.drawCircle(getWidth() / 2, getHeight() / 2, (float) (getWidth() / 2.6), mButtonPaint);
|
||||
if (null != mBitmap) {
|
||||
canvas.drawBitmap(mBitmap, (getWidth() - mBitmap.getWidth()) / 2,
|
||||
(getHeight() - mBitmap.getHeight()) / 2, mDrawablePaint);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
int color;
|
||||
if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
color = mColor;
|
||||
} else {
|
||||
color = darkenColor(mColor);
|
||||
}
|
||||
mButtonPaint.setColor(color);
|
||||
invalidate();
|
||||
return super.onTouchEvent(event);
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 263 B |
After Width: | Height: | Size: 257 B |
Before Width: | Height: | Size: 268 B |
Before Width: | Height: | Size: 262 B |
After Width: | Height: | Size: 327 B |
After Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 250 B |
Before Width: | Height: | Size: 234 B |
After Width: | Height: | Size: 412 B |
After Width: | Height: | Size: 405 B |
Before Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 288 B |
After Width: | Height: | Size: 226 B |
After Width: | Height: | Size: 220 B |
Before Width: | Height: | Size: 190 B |
Before Width: | Height: | Size: 185 B |
@ -1,87 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
** Copyright (c) 2012 Todoroo Inc
|
||||
**
|
||||
** See the file "LICENSE" for the full license governing this code.
|
||||
-->
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/asQuickaddBackgroundColor"
|
||||
android:orientation="vertical">
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="1px"
|
||||
android:background="?attr/asThemeTextColor"/>
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="49dip"
|
||||
android:padding="3dip"
|
||||
android:paddingBottom="0dip"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<!-- Quick Add Task -->
|
||||
<EditText android:id="@+id/quickAddText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="39dip"
|
||||
android:layout_marginRight="8dip"
|
||||
android:layout_marginLeft="5dip"
|
||||
android:layout_marginBottom="2dip"
|
||||
android:layout_marginTop="2dip"
|
||||
android:layout_weight="100"
|
||||
android:paddingLeft="5dip"
|
||||
android:background="?attr/asEditTextBackground"
|
||||
android:textColor="?attr/asTextColor"
|
||||
android:hint="@string/TLA_quick_add_hint"
|
||||
android:textSize="16sp"
|
||||
android:autoText="true"
|
||||
android:capitalize="sentences"/>
|
||||
|
||||
<!-- Extended Add Button -->
|
||||
<ImageButton android:id="@+id/quickAddButton"
|
||||
android:layout_width="39dip"
|
||||
android:layout_height="39dip"
|
||||
android:layout_marginRight="5dip"
|
||||
android:layout_weight="1"
|
||||
android:background="@android:color/transparent"
|
||||
android:src="?attr/ic_action_new"
|
||||
android:scaleType="center"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/taskListQuickaddControlsContainer"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="5dip"
|
||||
android:background="#22000000"
|
||||
android:visibility="gone">
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="1px"
|
||||
android:background="?attr/asSeparatorBackground"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/taskListQuickaddControls"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="50dip"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<View
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_width="1px"
|
||||
android:background="?attr/asSeparatorBackground"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</merge>
|
@ -1,27 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
** Copyright (c) 2012 Todoroo Inc
|
||||
**
|
||||
** See the file "LICENSE" for the full license governing this code.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tasks="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/taskListParent"
|
||||
android:layout_width="fill_parent"
|
||||
style="@style/Content"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:descendantFocusability="beforeDescendants"
|
||||
android:focusable="true"
|
||||
android:focusableInTouchMode="true"
|
||||
android:descendantFocusability="beforeDescendants"
|
||||
style="@style/Content"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<!-- Body goes here -->
|
||||
|
||||
<!-- Footer -->
|
||||
<com.todoroo.astrid.ui.QuickAddBar
|
||||
android:id="@+id/taskListFooter"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
style="@style/Content" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.faizmalkani.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_gravity="end|bottom"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
tasks:drawable="?attr/ic_action_add"
|
||||
tasks:tint="?attr/asAbBackgroundColor"/>
|
||||
|
||||
</FrameLayout>
|
||||
|