@@ -32,10 +32,13 @@ public class TargetDrawable {
3232 public static final int [] STATE_INACTIVE =
3333 { android .R .attr .state_enabled , -android .R .attr .state_active };
3434 public static final int [] STATE_FOCUSED =
35- { android .R .attr .state_enabled , android .R .attr .state_focused };
35+ { android .R .attr .state_enabled , -android .R .attr .state_active ,
36+ android .R .attr .state_focused };
3637
3738 private float mTranslationX = 0.0f ;
3839 private float mTranslationY = 0.0f ;
40+ private float mPositionX = 0.0f ;
41+ private float mPositionY = 0.0f ;
3942 private float mScaleX = 1.0f ;
4043 private float mScaleY = 1.0f ;
4144 private float mAlpha = 1.0f ;
@@ -196,6 +199,22 @@ public float getAlpha() {
196199 return mAlpha ;
197200 }
198201
202+ public void setPositionX (float x ) {
203+ mPositionX = x ;
204+ }
205+
206+ public void setPositionY (float y ) {
207+ mPositionY = y ;
208+ }
209+
210+ public float getPositionX () {
211+ return mPositionX ;
212+ }
213+
214+ public float getPositionY () {
215+ return mPositionY ;
216+ }
217+
199218 public int getWidth () {
200219 return mDrawable != null ? mDrawable .getIntrinsicWidth () : 0 ;
201220 }
@@ -209,8 +228,8 @@ public void draw(Canvas canvas) {
209228 return ;
210229 }
211230 canvas .save (Canvas .MATRIX_SAVE_FLAG );
212- canvas .translate ( mTranslationX , mTranslationY );
213- canvas .scale ( mScaleX , mScaleY );
231+ canvas .scale ( mScaleX , mScaleY , mPositionX , mPositionY );
232+ canvas .translate ( mTranslationX + mPositionX , mTranslationY + mPositionY );
214233 canvas .translate (-0.5f * getWidth (), -0.5f * getHeight ());
215234 mDrawable .setAlpha ((int ) Math .round (mAlpha * 255f ));
216235 mDrawable .draw (canvas );
0 commit comments