/**
* Aligns the shadow with {@param view}
* @param viewParent immediate parent of {@param view}. It must be a sibling of this view.
*/
public void alignWithIconView(BubbleTextView view, ViewGroup viewParent, View clipAgainstView) {
float leftShift = view.getLeft() + viewParent.getLeft() - getLeft();
float topShift = view.getTop() + viewParent.getTop() - getTop();
int iconWidth = view.getRight() - view.getLeft();
int iconHeight = view.getBottom() - view.getTop();
int iconHSpace = iconWidth - view.getCompoundPaddingRight() - view.getCompoundPaddingLeft();
float drawableWidth = view.getIcon().getBounds().width();
if (clipAgainstView != null) {
// Set the bounds to clip against
int[] coords = new int[] {0, 0};
Utilities.getDescendantCoordRelativeToAncestor(clipAgainstView, (View) getParent(),
coords, false);
int clipLeft = (int) Math.max(0, coords[0] - leftShift - mShadowPadding);
int clipTop = (int) Math.max(0, coords[1] - topShift - mShadowPadding) ;
setClipBounds(new Rect(clipLeft, clipTop, clipLeft + iconWidth, clipTop + iconHeight));
} else {
// Reset the clip bounds
setClipBounds(null);
}
setTranslationX(leftShift
+ viewParent.getTranslationX()
+ view.getCompoundPaddingLeft() * view.getScaleX()
+ (iconHSpace - drawableWidth) * view.getScaleX() / 2 /* drawable gap */
+ iconWidth * (1 - view.getScaleX()) / 2 /* gap due to scale */
- mShadowPadding /* extra shadow size */
);
setTranslationY(topShift
+ viewParent.getTranslationY()
+ view.getPaddingTop() * view.getScaleY() /* drawable gap */
+ view.getHeight() * (1 - view.getScaleY()) / 2 /* gap due to scale */
- mShadowPadding /* extra shadow size */
);
}
ClickShadowView.java 文件源码
java
阅读 20
收藏 0
点赞 0
评论 0
项目:LaunchEnr
作者:
评论列表
文章目录