mirror of https://github.com/tasks/tasks
Created wrapper layer so gestures don't crash on Android 1.5
parent
9d2c0a8564
commit
5c07e7f9bc
@ -0,0 +1,42 @@
|
||||
package com.todoroo.andlib.widget;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.gesture.Gesture;
|
||||
import android.gesture.GestureLibraries;
|
||||
import android.gesture.GestureLibrary;
|
||||
import android.gesture.GestureOverlayView;
|
||||
import android.gesture.Prediction;
|
||||
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
|
||||
|
||||
import com.todoroo.andlib.widget.GestureService.GestureInterface;
|
||||
|
||||
public class Api4GestureDetector implements OnGesturePerformedListener {
|
||||
private final GestureLibrary mLibrary;
|
||||
private final GestureInterface listener;
|
||||
|
||||
public Api4GestureDetector(Activity activity, int view, int gestureLibrary, GestureInterface listener) {
|
||||
this.listener = listener;
|
||||
mLibrary = GestureLibraries.fromRawResource(activity, gestureLibrary);
|
||||
|
||||
if(mLibrary.load()) {
|
||||
GestureOverlayView gestures = (GestureOverlayView) activity.findViewById(view);
|
||||
gestures.addOnGesturePerformedListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
|
||||
ArrayList<Prediction> predictions = mLibrary.recognize(gesture);
|
||||
|
||||
// We want at least one prediction
|
||||
if (predictions.size() > 0) {
|
||||
Prediction prediction = predictions.get(0);
|
||||
// We want at least some confidence in the result
|
||||
if (prediction.score > 1.0) {
|
||||
listener.gesturePerformed(prediction.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package com.todoroo.andlib.widget;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.todoroo.andlib.utility.AndroidUtilities;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* All API versions-friendly gesture detector. On SDK < 4, nothing happens
|
||||
* @author Tim Su <tim@todoroo.com>
|
||||
*
|
||||
*/
|
||||
public class GestureService {
|
||||
|
||||
public interface GestureInterface {
|
||||
public void gesturePerformed(String gesture);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register gesture detector. If android SDK version is not correct,
|
||||
* a {@link VerifyError} will be throw. Catch this explicitly.
|
||||
*
|
||||
* @param activity
|
||||
* @param view
|
||||
* @param gestureLibrary
|
||||
* @param listener
|
||||
* @throws VerifyError
|
||||
*/
|
||||
public static void registerGestureDetector(Activity activity, int view,
|
||||
int gestureLibrary, GestureInterface listener) throws VerifyError {
|
||||
if(AndroidUtilities.getSdkVersion() > 3)
|
||||
new Api4GestureDetector(activity, view, gestureLibrary, listener);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,99 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- See the file "LICENSE" for the full license governing this code. -->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/taskListParent"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:background="@drawable/background_gradient"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Header -->
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:background="@drawable/edit_header">
|
||||
|
||||
<!-- Back Button -->
|
||||
<ImageView android:id="@+id/back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_weight="1"
|
||||
android:src="@drawable/tango_previous"
|
||||
android:paddingLeft="5dip"
|
||||
android:paddingRight="8dip"/>
|
||||
|
||||
<!-- List Label -->
|
||||
<TextView android:id="@+id/listLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="100"
|
||||
android:singleLine="true"
|
||||
android:paddingTop="6dip"
|
||||
android:paddingRight="50dip"
|
||||
style="@style/TextAppearance.TLA_Header"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="100">
|
||||
|
||||
<!-- No Tasks label -->
|
||||
<TextView android:id="@android:id/empty"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:visibility="gone"
|
||||
android:text="@string/TLA_no_items"
|
||||
style="@style/TextAppearance.TLA_NoItems"/>
|
||||
|
||||
<!-- Task List -->
|
||||
<ListView android:id="@android:id/list"
|
||||
android:scrollbars="vertical"
|
||||
android:cacheColorHint="#00000000"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<!-- Footer -->
|
||||
<LinearLayout
|
||||
android:id="@+id/taskListFooter"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<!-- Quick Add Button -->
|
||||
<ImageButton android:id="@+id/quickAddButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:visibility="gone"
|
||||
android:src="@drawable/tango_add"
|
||||
android:scaleType="fitCenter"/>
|
||||
|
||||
<!-- Quick Add Task -->
|
||||
<EditText android:id="@+id/quickAddText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_weight="100"
|
||||
android:hint="@string/TLA_quick_add_hint"
|
||||
android:singleLine="true"
|
||||
android:autoText="true"
|
||||
android:capitalize="sentences"/>
|
||||
|
||||
<!-- Extended Add Button -->
|
||||
<ImageButton android:id="@+id/extendedAddButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:src="@drawable/tango_edit"
|
||||
android:scaleType="fitCenter"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
Loading…
Reference in New Issue