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',