diff --git a/src/api-impl-jni/widgets/android_widget_TextView.c b/src/api-impl-jni/widgets/android_widget_TextView.c
index 8a03b766..a35ce94b 100644
--- a/src/api-impl-jni/widgets/android_widget_TextView.c
+++ b/src/api-impl-jni/widgets/android_widget_TextView.c
@@ -15,6 +15,7 @@ JNIEXPORT jlong JNICALL Java_android_widget_TextView_native_1constructor(JNIEnv
GtkWidget *wrapper = g_object_ref(wrapper_widget_new());
GtkWidget *label = gtk_label_new(text);
+ gtk_label_set_wrap(GTK_LABEL(label), TRUE);
wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), label);
return _INTPTR(label);
}
diff --git a/src/api-impl/android/animation/Animator.java b/src/api-impl/android/animation/Animator.java
index 26245b90..d4318b49 100644
--- a/src/api-impl/android/animation/Animator.java
+++ b/src/api-impl/android/animation/Animator.java
@@ -2,6 +2,9 @@ package android.animation;
public class Animator {
+ public interface AnimatorListener {
+ }
+
public void setTarget(Object target) {}
public void start() {}
diff --git a/src/api-impl/android/animation/AnimatorInflater.java b/src/api-impl/android/animation/AnimatorInflater.java
index c878bbdf..efc60aa0 100644
--- a/src/api-impl/android/animation/AnimatorInflater.java
+++ b/src/api-impl/android/animation/AnimatorInflater.java
@@ -5,7 +5,7 @@ import android.content.Context;
public class AnimatorInflater {
public static Animator loadAnimator(Context context, int resId) {
- return new Animator();
+ return new ObjectAnimator();
}
}
diff --git a/src/api-impl/android/animation/AnimatorSet.java b/src/api-impl/android/animation/AnimatorSet.java
new file mode 100644
index 00000000..06351d0f
--- /dev/null
+++ b/src/api-impl/android/animation/AnimatorSet.java
@@ -0,0 +1,5 @@
+package android.animation;
+
+public class AnimatorSet extends Animator {
+
+}
diff --git a/src/api-impl/android/animation/ObjectAnimator.java b/src/api-impl/android/animation/ObjectAnimator.java
new file mode 100644
index 00000000..9c14fa2f
--- /dev/null
+++ b/src/api-impl/android/animation/ObjectAnimator.java
@@ -0,0 +1,9 @@
+package android.animation;
+
+public class ObjectAnimator extends ValueAnimator {
+
+ public String getPropertyName() {
+ return null;
+ }
+
+}
diff --git a/src/api-impl/android/animation/TimeInterpolator.java b/src/api-impl/android/animation/TimeInterpolator.java
new file mode 100644
index 00000000..39dd740d
--- /dev/null
+++ b/src/api-impl/android/animation/TimeInterpolator.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * 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 android.animation;
+
+/**
+ * A time interpolator defines the rate of change of an animation. This allows animations
+ * to have non-linear motion, such as acceleration and deceleration.
+ */
+public interface TimeInterpolator {
+ /**
+ * Maps a value representing the elapsed fraction of an animation to a value that represents
+ * the interpolated fraction. This interpolated value is then multiplied by the change in
+ * value of an animation to derive the animated value at the current elapsed animation time.
+ *
+ * @param input A value between 0 and 1.0 indicating our current point
+ * in the animation where 0 represents the start and 1.0 represents
+ * the end
+ * @return The interpolation value. This value can be more than 1.0 for
+ * interpolators which overshoot their targets, or less than 0 for
+ * interpolators that undershoot their targets.
+ */
+ float getInterpolation(float input);
+}
diff --git a/src/api-impl/android/animation/TypeEvaluator.java b/src/api-impl/android/animation/TypeEvaluator.java
new file mode 100644
index 00000000..f6a29330
--- /dev/null
+++ b/src/api-impl/android/animation/TypeEvaluator.java
@@ -0,0 +1,5 @@
+package android.animation;
+
+public interface TypeEvaluator {
+
+}
diff --git a/src/api-impl/android/animation/ValueAnimator.java b/src/api-impl/android/animation/ValueAnimator.java
index f8eca733..d19624e4 100644
--- a/src/api-impl/android/animation/ValueAnimator.java
+++ b/src/api-impl/android/animation/ValueAnimator.java
@@ -1,6 +1,8 @@
package android.animation;
-public class ValueAnimator {
+final class PropertyValuesHolder{}
+
+public class ValueAnimator extends Animator {
public static ValueAnimator ofFloat(float... values) {
return new ValueAnimator();
@@ -16,6 +18,19 @@ public class ValueAnimator {
return 20; // 20ms frame interval
}
+ public PropertyValuesHolder[] getValues() {
+ return null;
+ }
+
+ public long getStartDelay() {return 0;}
+ public long getDuration() {return 0;}
+ public TimeInterpolator getInterpolator() {return null;}
+ public int getRepeatCount() {return 0;}
+ public int getRepeatMode() {return 0;}
+ public void setInterpolator(TimeInterpolator interpolator) {}
+ public void addListener(Animator.AnimatorListener listener) {}
+ public void setFloatValues(float[] values) {}
+
/**
* Implementors of this interface can add themselves as update listeners
* to an ValueAnimator instance to receive callbacks on every animation
diff --git a/src/api-impl/android/app/Activity.java b/src/api-impl/android/app/Activity.java
index 5bce9b6d..6a52fa2c 100644
--- a/src/api-impl/android/app/Activity.java
+++ b/src/api-impl/android/app/Activity.java
@@ -329,6 +329,8 @@ public class Activity extends Context {
return "Title";
}
+ public boolean isChangingConfigurations() {return false;}
+
private native void nativeFinish(long native_window);
private static native void nativeStartActivity(Activity activity);
}
diff --git a/src/api-impl/android/app/SharedElementCallback.java b/src/api-impl/android/app/SharedElementCallback.java
new file mode 100644
index 00000000..143a91a7
--- /dev/null
+++ b/src/api-impl/android/app/SharedElementCallback.java
@@ -0,0 +1,5 @@
+package android.app;
+
+public class SharedElementCallback {
+
+}
diff --git a/src/api-impl/android/content/Context.java b/src/api-impl/android/content/Context.java
index edb94e35..62b7b635 100644
--- a/src/api-impl/android/content/Context.java
+++ b/src/api-impl/android/content/Context.java
@@ -358,4 +358,6 @@ public class Context extends Object {
public final CharSequence getText(int resId) {
return getResources().getText(resId);
}
+
+ public boolean isRestricted() {return false;}
}
diff --git a/src/api-impl/android/content/res/TypedArray.java b/src/api-impl/android/content/res/TypedArray.java
index 971e2492..fb74a40e 100644
--- a/src/api-impl/android/content/res/TypedArray.java
+++ b/src/api-impl/android/content/res/TypedArray.java
@@ -329,6 +329,8 @@ public class TypedArray {
public ColorStateList getColorStateList(int index) {
final TypedValue value = mValue;
if (getValueAt(index * AssetManager.STYLE_NUM_ENTRIES, value)) {
+ if (value.type == -1)
+ return null;
return mResources.loadColorStateList(value, value.resourceId);
}
return null;
diff --git a/src/api-impl/android/graphics/Color.java b/src/api-impl/android/graphics/Color.java
index 5087306d..405cbe32 100644
--- a/src/api-impl/android/graphics/Color.java
+++ b/src/api-impl/android/graphics/Color.java
@@ -45,6 +45,30 @@ public class Color {
return color >>> 24;
}
+ /**
+ * Return the red component of a color int. This is the same as saying
+ * (color >> 16) & 0xFF
+ */
+ public static int red(int color) {
+ return (color >> 16) & 0xFF;
+ }
+
+ /**
+ * Return the green component of a color int. This is the same as saying
+ * (color >> 8) & 0xFF
+ */
+ public static int green(int color) {
+ return (color >> 8) & 0xFF;
+ }
+
+ /**
+ * Return the blue component of a color int. This is the same as saying
+ * color & 0xFF
+ */
+ public static int blue(int color) {
+ return color & 0xFF;
+ }
+
/**
* Parse the color string, and return the corresponding color-int.
* If the string cannot be parsed, throws an IllegalArgumentException
diff --git a/src/api-impl/android/graphics/ColorFilter.java b/src/api-impl/android/graphics/ColorFilter.java
new file mode 100644
index 00000000..81404940
--- /dev/null
+++ b/src/api-impl/android/graphics/ColorFilter.java
@@ -0,0 +1,5 @@
+package android.graphics;
+
+public class ColorFilter {
+
+}
diff --git a/src/api-impl/android/graphics/Matrix.java b/src/api-impl/android/graphics/Matrix.java
index 2e9c3187..0bdec467 100644
--- a/src/api-impl/android/graphics/Matrix.java
+++ b/src/api-impl/android/graphics/Matrix.java
@@ -245,7 +245,7 @@ public class Matrix {
* Set the matrix to identity
*/
public void reset() {
- native_reset(native_instance);
+ // native_reset(native_instance);
}
/**
* Set the matrix to translate by (dx, dy).
@@ -386,7 +386,8 @@ public class Matrix {
* M' = S(sx, sy, px, py) * M
*/
public boolean postScale(float sx, float sy, float px, float py) {
- return native_postScale(native_instance, sx, sy, px, py);
+ // return native_postScale(native_instance, sx, sy, px, py);
+ return true;
}
/**
* Postconcats the matrix with the specified scale.
@@ -480,7 +481,8 @@ public class Matrix {
if (dst == null || src == null) {
throw new NullPointerException();
}
- return native_setRectToRect(native_instance, src, dst, stf.nativeInt);
+ // return native_setRectToRect(native_instance, src, dst, stf.nativeInt);
+ return true;
}
// private helper to perform range checks on arrays of "points"
private static void checkPointArrays(float[] src, int srcIndex,
diff --git a/src/api-impl/android/graphics/PorterDuffColorFilter.java b/src/api-impl/android/graphics/PorterDuffColorFilter.java
index d7ed7c7b..29a62331 100644
--- a/src/api-impl/android/graphics/PorterDuffColorFilter.java
+++ b/src/api-impl/android/graphics/PorterDuffColorFilter.java
@@ -20,7 +20,7 @@ package android.graphics;
* A color filter that can be used to tint the source pixels using a single
* color and a specific {@link PorterDuff Porter-Duff composite mode}.
*/
-public class PorterDuffColorFilter {
+public class PorterDuffColorFilter extends ColorFilter {
private int mColor;
private PorterDuff.Mode mMode;
diff --git a/src/api-impl/android/graphics/Typeface.java b/src/api-impl/android/graphics/Typeface.java
index d2dbff37..86f7c135 100644
--- a/src/api-impl/android/graphics/Typeface.java
+++ b/src/api-impl/android/graphics/Typeface.java
@@ -36,4 +36,12 @@ public class Typeface {
public static Typeface createFromAsset(AssetManager mgr, String path) {
return null;
}
+
+ public static Typeface create(String familyName, int style) {
+ return null;
+ }
+
+ public static Typeface create(Typeface typeface, int style) {
+ return null;
+ }
}
diff --git a/src/api-impl/android/graphics/drawable/Drawable.java b/src/api-impl/android/graphics/drawable/Drawable.java
index a84d08d4..cbda40e7 100644
--- a/src/api-impl/android/graphics/drawable/Drawable.java
+++ b/src/api-impl/android/graphics/drawable/Drawable.java
@@ -2,6 +2,7 @@ package android.graphics.drawable;
import android.content.res.Resources;
import android.graphics.Canvas;
+import android.graphics.ColorFilter;
import android.graphics.PorterDuff;
import android.graphics.Rect;
@@ -65,8 +66,12 @@ public abstract class Drawable {
public void setBounds(Rect bounds) {}
public void setColorFilter(int color, PorterDuff.Mode mode) {}
+ public void setColorFilter(ColorFilter filter) {}
public Drawable mutate() {
return this;
}
+
+ public int getIntrinsicWidth() {return 0;}
+ public int getIntrinsicHeight() {return 0;}
}
diff --git a/src/api-impl/android/graphics/drawable/InsetDrawable.java b/src/api-impl/android/graphics/drawable/InsetDrawable.java
new file mode 100644
index 00000000..c5f36c80
--- /dev/null
+++ b/src/api-impl/android/graphics/drawable/InsetDrawable.java
@@ -0,0 +1,17 @@
+package android.graphics.drawable;
+
+import android.graphics.Canvas;
+
+public class InsetDrawable extends Drawable {
+
+ public InsetDrawable(Drawable drawable, int insetLeft, int insetTop, int insetRight, int insetBottom) {
+ super();
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ // TODO Auto-generated method stub
+ throw new UnsupportedOperationException("Unimplemented method 'draw'");
+ }
+
+}
diff --git a/src/api-impl/android/text/Layout.java b/src/api-impl/android/text/Layout.java
new file mode 100644
index 00000000..3fd8e8d3
--- /dev/null
+++ b/src/api-impl/android/text/Layout.java
@@ -0,0 +1,12 @@
+package android.text;
+
+public class Layout {
+
+ public enum Alignment {
+ ALIGN_NORMAL,
+ ALIGN_OPPOSITE,
+ ALIGN_CENTER,
+ ALIGN_LEFT,
+ ALIGN_RIGHT,
+ }
+}
diff --git a/src/api-impl/android/text/StaticLayout.java b/src/api-impl/android/text/StaticLayout.java
new file mode 100644
index 00000000..9df82998
--- /dev/null
+++ b/src/api-impl/android/text/StaticLayout.java
@@ -0,0 +1,21 @@
+package android.text;
+
+import android.text.Layout.Alignment;
+
+public class StaticLayout {
+
+ private CharSequence text;
+
+ public StaticLayout(CharSequence source, int bufstart, int bufend,
+ TextPaint paint, int outerwidth,
+ Alignment align, TextDirectionHeuristic textDir,
+ float spacingmult, float spacingadd,
+ boolean includepad,
+ TextUtils.TruncateAt ellipsize, int ellipsizedWidth, int maxLines) {
+ this.text = source;
+ }
+
+ public CharSequence getText() {
+ return text;
+ }
+}
diff --git a/src/api-impl/android/text/TextDirectionHeuristic.java b/src/api-impl/android/text/TextDirectionHeuristic.java
new file mode 100644
index 00000000..937a1143
--- /dev/null
+++ b/src/api-impl/android/text/TextDirectionHeuristic.java
@@ -0,0 +1,4 @@
+package android.text;
+
+public class TextDirectionHeuristic {
+}
diff --git a/src/api-impl/android/text/TextDirectionHeuristics.java b/src/api-impl/android/text/TextDirectionHeuristics.java
new file mode 100644
index 00000000..531cb9c5
--- /dev/null
+++ b/src/api-impl/android/text/TextDirectionHeuristics.java
@@ -0,0 +1,8 @@
+package android.text;
+
+public class TextDirectionHeuristics {
+
+ public static final TextDirectionHeuristic LTR = new TextDirectionHeuristic();
+
+ public static final TextDirectionHeuristic RTL = new TextDirectionHeuristic();
+}
diff --git a/src/api-impl/android/text/TextUtils.java b/src/api-impl/android/text/TextUtils.java
index 237adcf0..3ead693a 100644
--- a/src/api-impl/android/text/TextUtils.java
+++ b/src/api-impl/android/text/TextUtils.java
@@ -96,4 +96,16 @@ public class TextUtils {
MARQUEE,
END_SMALL
}
+
+ /**
+ * Returns the original text if it fits in the specified width
+ * given the properties of the specified Paint,
+ * or, if it does not fit, a truncated
+ * copy with ellipsis character added at the specified edge or center.
+ */
+ public static CharSequence ellipsize(CharSequence text,
+ TextPaint p,
+ float avail, TruncateAt where) {
+ return text;
+ }
}
diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java
index 4b91f661..69bf8802 100644
--- a/src/api-impl/android/view/View.java
+++ b/src/api-impl/android/view/View.java
@@ -612,6 +612,14 @@ public class View extends Object {
// TODO
}
+ public interface OnUnhandledKeyEventListener {
+ // TODO
+ }
+
+ public interface OnFocusChangeListener {
+ // TODO
+ }
+
public interface OnCreateContextMenuListener {
/**
* Called when the context menu for this view is being built. It is not
@@ -789,18 +797,18 @@ public class View extends Object {
public View(Context context, AttributeSet attrs) {
this(context, attrs, 0);
-
- if (attrs != null) {
- id = attrs.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "id", 0);
- if (id != 0)
- setId(id);
- }
}
public View(Context context, AttributeSet attrs, int defStyle) {
this.context = context;
widget = native_constructor(context, attrs);
+
+ if (attrs != null) {
+ id = attrs.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "id", 0);
+ if (id != 0)
+ setId(id);
+ }
}
public View findViewById(int id) {
@@ -926,11 +934,13 @@ public class View extends Object {
public void getHitRect(Rect outRect) {}
public final boolean getLocalVisibleRect(Rect r) { return false; }
- public final int getTop() { return 0; }
+ public final int getScrollX() { return 0; }
public final int getScrollY() { return 0; }
public void scrollTo(int x, int y) {}
+ protected void onScrollChanged(int l, int t, int oldl, int oldt) {}
+
public void getLocationOnScreen(int[] location) { // FIXME: actually return the widget's location (and also have the onclick callback convert to window coordinates, because is seems that's what android deals in..)
location[0] = 0;
location[1] = 0;
@@ -1159,4 +1169,30 @@ public class View extends Object {
super.finalize();
}
}
+
+ public final int[] getDrawableState() {return new int[0];}
+
+ public float getRotation() {return 0.f;}
+
+ public void bringToFront() {}
+
+ public boolean isEnabled() {return true;}
+ public boolean hasFocus() {return false;}
+ public boolean isLayoutRequested() {return true;}
+ public int getBaseline() {return -1;}
+ public boolean hasFocusable() {return false;}
+ public boolean isFocused() {return false;}
+
+ public void clearAnimation() {}
+
+ public ViewPropertyAnimator animate() {
+ return new ViewPropertyAnimator();
+ }
+
+ public float getTranslationX() {return 0.f;}
+ public float getTranslationY() {return 0.f;}
+ public void setTranslationX(float translationX) {}
+ public void setTranslationY(float translationY) {}
+
+ public void setAlpha(float alpha) {}
}
diff --git a/src/api-impl/android/view/ViewConfiguration.java b/src/api-impl/android/view/ViewConfiguration.java
index 89cf36ab..5cfacb7f 100644
--- a/src/api-impl/android/view/ViewConfiguration.java
+++ b/src/api-impl/android/view/ViewConfiguration.java
@@ -31,4 +31,8 @@ public class ViewConfiguration {
public int getScaledPagingTouchSlop(){
return 0;
}
+
+ public boolean hasPermanentMenuKey() {
+ return false;
+ }
}
diff --git a/src/api-impl/android/view/ViewGroup.java b/src/api-impl/android/view/ViewGroup.java
index 758e71dd..2cf4955c 100644
--- a/src/api-impl/android/view/ViewGroup.java
+++ b/src/api-impl/android/view/ViewGroup.java
@@ -57,6 +57,8 @@ public class ViewGroup extends View implements ViewParent, ViewManager {
}
public void addView(View child, int index, LayoutParams params) {
+ if (child.parent == this)
+ return;
if (params != null) {
child.setLayoutParams(params);
}
@@ -66,11 +68,17 @@ public class ViewGroup extends View implements ViewParent, ViewManager {
}
public void removeView(View child) {
+ if (child.parent != this)
+ return;
child.parent = null;
children.remove(child);
native_removeView(widget, child.widget);
}
+ public void removeViewAt(int index) {
+ removeView(children.get(index));
+ }
+
public void removeAllViews() {
for (Iterator it = children.iterator(); it.hasNext();) {
View child = it.next();
@@ -80,6 +88,16 @@ public class ViewGroup extends View implements ViewParent, ViewManager {
}
}
+ public void detachViewFromParent(int index) {
+ }
+
+ public void attachViewToParent(View view, int index, LayoutParams params) {
+ }
+
+ protected void removeDetachedView(View child, boolean animate) {
+ removeView(child);
+ }
+
@Override
protected native long native_constructor(Context context, AttributeSet attrs);
protected native void native_addView(long widget, long child, int index, LayoutParams params);
@@ -89,6 +107,10 @@ public class ViewGroup extends View implements ViewParent, ViewManager {
return children.get(index);
}
+ public int indexOfChild(View child) {
+ return children.indexOf(child);
+ }
+
public void updateViewLayout(View view, ViewGroup.LayoutParams params) {}
public LayoutParams generateLayoutParams(AttributeSet attrs) {
@@ -196,6 +218,12 @@ public class ViewGroup extends View implements ViewParent, ViewManager {
child.measure(childWidthMeasureSpec, childHeightMeasureSpec);
}
+ public void setAddStatesFromChildren(boolean addsStates) {}
+
+ public View getFocusedChild() {return null;}
+
+ public int getDescendantFocusability() {return 0;}
+
public static class LayoutParams {
public static final int FILL_PARENT = -1;
public static final int MATCH_PARENT = -1;
diff --git a/src/api-impl/android/view/ViewPropertyAnimator.java b/src/api-impl/android/view/ViewPropertyAnimator.java
new file mode 100644
index 00000000..5426b98b
--- /dev/null
+++ b/src/api-impl/android/view/ViewPropertyAnimator.java
@@ -0,0 +1,12 @@
+package android.view;
+
+import android.animation.TimeInterpolator;
+
+public class ViewPropertyAnimator {
+
+ public void cancel() {}
+
+ public ViewPropertyAnimator setInterpolator(TimeInterpolator interpolator) {
+ return this;
+ }
+}
diff --git a/src/api-impl/android/view/Window.java b/src/api-impl/android/view/Window.java
index 1c194897..015985a8 100644
--- a/src/api-impl/android/view/Window.java
+++ b/src/api-impl/android/view/Window.java
@@ -5,6 +5,8 @@ public class Window {
public void onContentChanged();
public abstract boolean onCreatePanelMenu(int featureId, Menu menu);
+
+ public View onCreatePanelView(int featureId);
}
public static class fixme_callback implements Callback {
@@ -16,6 +18,11 @@ public class Window {
public boolean onCreatePanelMenu(int featureId, Menu menu) {
return false;
}
+
+ @Override
+ public View onCreatePanelView(int featureId) {
+ return null;
+ }
}
// FIXME private
diff --git a/src/api-impl/android/view/animation/AccelerateDecelerateInterpolator.java b/src/api-impl/android/view/animation/AccelerateDecelerateInterpolator.java
new file mode 100644
index 00000000..f326692b
--- /dev/null
+++ b/src/api-impl/android/view/animation/AccelerateDecelerateInterpolator.java
@@ -0,0 +1,5 @@
+package android.view.animation;
+
+public class AccelerateDecelerateInterpolator {
+
+}
diff --git a/src/api-impl/android/view/animation/DecelerateInterpolator.java b/src/api-impl/android/view/animation/DecelerateInterpolator.java
index d0805538..6eb1e364 100644
--- a/src/api-impl/android/view/animation/DecelerateInterpolator.java
+++ b/src/api-impl/android/view/animation/DecelerateInterpolator.java
@@ -2,4 +2,12 @@ package android.view.animation;
public class DecelerateInterpolator implements Interpolator{
+ public DecelerateInterpolator(float value) {}
+
+ @Override
+ public float getInterpolation(float input) {
+ // TODO Auto-generated method stub
+ throw new UnsupportedOperationException("Unimplemented method 'getInterpolation'");
+ }
+
}
diff --git a/src/api-impl/android/view/animation/Interpolator.java b/src/api-impl/android/view/animation/Interpolator.java
index 511c6123..3c68bda7 100644
--- a/src/api-impl/android/view/animation/Interpolator.java
+++ b/src/api-impl/android/view/animation/Interpolator.java
@@ -1,5 +1,7 @@
package android.view.animation;
-public interface Interpolator {
+import android.animation.TimeInterpolator;
+
+public interface Interpolator extends TimeInterpolator {
}
diff --git a/src/api-impl/android/view/animation/LinearInterpolator.java b/src/api-impl/android/view/animation/LinearInterpolator.java
new file mode 100644
index 00000000..521b7286
--- /dev/null
+++ b/src/api-impl/android/view/animation/LinearInterpolator.java
@@ -0,0 +1,12 @@
+package android.view.animation;
+
+import android.animation.TimeInterpolator;
+
+public class LinearInterpolator implements TimeInterpolator {
+
+ @Override
+ public float getInterpolation(float input) {
+ return input;
+ }
+
+}
diff --git a/src/api-impl/android/widget/AutoCompleteTextView.java b/src/api-impl/android/widget/AutoCompleteTextView.java
new file mode 100644
index 00000000..a0c6a6e1
--- /dev/null
+++ b/src/api-impl/android/widget/AutoCompleteTextView.java
@@ -0,0 +1,19 @@
+package android.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+public class AutoCompleteTextView extends TextView {
+
+ public interface OnDismissListener {
+ }
+
+ public AutoCompleteTextView(Context context) {
+ super(context);
+ }
+
+ public AutoCompleteTextView(Context context, AttributeSet attributeSet) {
+ super(context, attributeSet);
+ }
+
+}
\ No newline at end of file
diff --git a/src/api-impl/android/widget/Checkable.java b/src/api-impl/android/widget/Checkable.java
new file mode 100644
index 00000000..b84da037
--- /dev/null
+++ b/src/api-impl/android/widget/Checkable.java
@@ -0,0 +1,4 @@
+package android.widget;
+
+public interface Checkable {
+}
\ No newline at end of file
diff --git a/src/api-impl/android/widget/FrameLayout.java b/src/api-impl/android/widget/FrameLayout.java
index 8365091f..40fa868e 100644
--- a/src/api-impl/android/widget/FrameLayout.java
+++ b/src/api-impl/android/widget/FrameLayout.java
@@ -54,5 +54,10 @@ public class FrameLayout extends ViewGroup {
this.height = height;
this.gravity = gravity;
}
+
+ public LayoutParams (ViewGroup.LayoutParams params) {
+ this.width = params.width;
+ this.height = params.height;
+ }
}
}
diff --git a/src/api-impl/android/widget/ImageView.java b/src/api-impl/android/widget/ImageView.java
index 959eb037..b55ed0f2 100644
--- a/src/api-impl/android/widget/ImageView.java
+++ b/src/api-impl/android/widget/ImageView.java
@@ -3,6 +3,7 @@ package android.widget;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
@@ -50,6 +51,8 @@ public class ImageView extends View {
public void setImageDrawable(Drawable drawable) {}
+ public void setImageMatrix(Matrix matrix) {}
+
/**
* Options for scaling the bounds of an image to the bounds of this view.
*/
diff --git a/src/api-impl/android/widget/LinearLayout.java b/src/api-impl/android/widget/LinearLayout.java
index 692945c5..adaaf3af 100644
--- a/src/api-impl/android/widget/LinearLayout.java
+++ b/src/api-impl/android/widget/LinearLayout.java
@@ -27,7 +27,16 @@ public class LinearLayout extends ViewGroup {
public native void setOrientation(int orientation);
public void setWeightSum(float weightSum) {}
- public static class LayoutParams extends ViewGroup.LayoutParams {
+ @Override
+ public LayoutParams generateLayoutParams(AttributeSet attrs) {
+ return new LayoutParams(getContext(), attrs);
+ }
+
+ public static class LayoutParams extends ViewGroup.MarginLayoutParams {
+ public LayoutParams (Context c, AttributeSet attrs) {
+ super(c, attrs);
+ }
+
public LayoutParams(int width, int height) {
super(width, height);
}
diff --git a/src/api-impl/android/widget/ScrollView.java b/src/api-impl/android/widget/ScrollView.java
index d7eb47ab..9d8a29ff 100644
--- a/src/api-impl/android/widget/ScrollView.java
+++ b/src/api-impl/android/widget/ScrollView.java
@@ -22,6 +22,5 @@ public class ScrollView extends ViewGroup {
@Override
protected native void native_removeView(long widget, long child);
- protected void onScrollChanged(int x, int y, int oldx, int oldy) {}
public void setFillViewport(boolean fillViewport) {}
}
diff --git a/src/api-impl/android/widget/Spinner.java b/src/api-impl/android/widget/Spinner.java
new file mode 100644
index 00000000..78dd1532
--- /dev/null
+++ b/src/api-impl/android/widget/Spinner.java
@@ -0,0 +1,17 @@
+package android.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+
+public class Spinner extends View {
+
+ public Spinner(Context context) {
+ super(context);
+ }
+
+ public Spinner(Context context, AttributeSet attributeSet) {
+ super(context, attributeSet);
+ }
+
+}
\ No newline at end of file
diff --git a/src/api-impl/android/widget/TextView.java b/src/api-impl/android/widget/TextView.java
index 9d848340..e4430185 100644
--- a/src/api-impl/android/widget/TextView.java
+++ b/src/api-impl/android/widget/TextView.java
@@ -10,6 +10,7 @@ import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.method.TransformationMethod;
import android.util.AttributeSet;
+import android.view.Gravity;
import android.view.View;
public class TextView extends View {
@@ -20,15 +21,21 @@ public class TextView extends View {
}
public TextView(Context context, AttributeSet attrs) {
- super(context, attrs);
+ this(context, attrs, 0);
}
public TextView(Context context) {
- super(context);
+ this(context, null);
}
public TextView(Context context, AttributeSet attrs, int defStyleAttr) {
- this(context, attrs);
+ super(context, attrs, defStyleAttr);
+
+ TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.TextView, defStyleAttr, 0);
+ if (a.hasValue(com.android.internal.R.styleable.TextView_text)) {
+ setText(a.getText(com.android.internal.R.styleable.TextView_text));
+ }
+ a.recycle();
}
@Override
@@ -96,6 +103,17 @@ public class TextView extends View {
public void setMinWidth(int minWidth) {}
public void setMaxWidth(int maxWidth) {}
+ public Typeface getTypeface() {return null;}
+
+ public float getTextSize() {return 10;}
+
+ public int getGravity() {
+ return Gravity.CENTER;
+ }
+
+ public int getCompoundPaddingTop() {return 0;}
+ public int getCompoundPaddingBottom() {return 0;}
+
public static interface OnEditorActionListener {
}
}
diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build
index 6f5c36a8..7ad2529c 100644
--- a/src/api-impl/meson.build
+++ b/src/api-impl/meson.build
@@ -4,7 +4,11 @@ hax_jar = jar('hax', [
'android/animation/Animator.java',
'android/animation/AnimatorInflater.java',
'android/animation/AnimatorListenerAdapter.java',
+ 'android/animation/AnimatorSet.java',
'android/animation/LayoutTransition.java',
+ 'android/animation/ObjectAnimator.java',
+ 'android/animation/TimeInterpolator.java',
+ 'android/animation/TypeEvaluator.java',
'android/animation/ValueAnimator.java',
'android/annotation/PrivateApi.java',
'android/annotation/SdkConstant.java',
@@ -29,6 +33,7 @@ hax_jar = jar('hax', [
'android/app/ProgressDialog.java',
'android/app/SearchManager.java',
'android/app/Service.java',
+ 'android/app/SharedElementCallback.java',
'android/app/SharedPreferencesImpl.java',
'android/app/UiModeManager.java',
'android/app/WallpaperManager.java',
@@ -100,6 +105,7 @@ hax_jar = jar('hax', [
'android/graphics/Bitmap.java',
'android/graphics/Canvas.java',
'android/graphics/Color.java',
+ 'android/graphics/ColorFilter.java',
'android/graphics/Matrix.java',
'android/graphics/Paint.java',
'android/graphics/Path.java',
@@ -118,6 +124,7 @@ hax_jar = jar('hax', [
'android/graphics/drawable/ColorDrawable.java',
'android/graphics/drawable/Drawable.java',
'android/graphics/drawable/GradientDrawable.java',
+ 'android/graphics/drawable/InsetDrawable.java',
'android/graphics/drawable/LayerDrawable.java',
'android/graphics/drawable/Animatable.java',
'android/hardware/display/DisplayManager.java',
@@ -191,6 +198,7 @@ hax_jar = jar('hax', [
'android/text/GetChars.java',
'android/text/Html.java',
'android/text/InputFilter.java',
+ 'android/text/Layout.java',
'android/text/NoCopySpan.java',
'android/text/Spannable.java',
'android/text/SpannableStringInternal.java',
@@ -198,7 +206,10 @@ hax_jar = jar('hax', [
'android/text/Spanned.java',
'android/text/SpannedString.java',
'android/text/SpanWatcher.java',
+ 'android/text/StaticLayout.java',
'android/text/TextPaint.java',
+ 'android/text/TextDirectionHeuristic.java',
+ 'android/text/TextDirectionHeuristics.java',
'android/text/TextUtils.java',
'android/text/TextWatcher.java',
'android/text/method/PasswordTransformationMethod.java',
@@ -261,12 +272,15 @@ hax_jar = jar('hax', [
'android/view/View.java',
'android/view/ViewManager.java',
'android/view/ViewParent.java',
+ 'android/view/ViewPropertyAnimator.java',
'android/view/ViewTreeObserver.java',
'android/view/Window.java',
'android/view/WindowManagerImpl.java',
'android/view/WindowManager.java',
+ 'android/view/animation/AccelerateDecelerateInterpolator.java',
'android/view/animation/Animation.java',
'android/view/animation/AnimationUtils.java',
+ 'android/view/animation/LinearInterpolator.java',
'android/view/accessibility/AccessibilityManager.java',
'android/view/textservice/TextServicesManager.java',
'android/webkit/DownloadListener.java',
@@ -274,7 +288,9 @@ hax_jar = jar('hax', [
'android/webkit/WebView.java',
'android/webkit/WebViewClient.java',
'android/widget/AdapterView.java',
+ 'android/widget/AutoCompleteTextView.java',
'android/widget/Button.java',
+ 'android/widget/Checkable.java',
'android/widget/CompoundButton.java',
'android/widget/EdgeEffect.java',
'android/widget/EditText.java',
@@ -293,6 +309,7 @@ hax_jar = jar('hax', [
'android/widget/Scroller.java',
'android/widget/ScrollView.java',
'android/widget/SeekBar.java',
+ 'android/widget/Spinner.java',
'android/widget/TextView.java',
'com/android/internal/Manifest.java',
'com/android/internal/R.java',