(mMenu, leftScale); ViewHelper.setScaleY(mMenu, leftScale); ViewHelper.setAlpha(mMenu ViewHelper.setPivotX(mContent, 0); ViewHelper.setPivotY(mContent, mContent.getHeight () / 2); ViewHelper.setScaleX(mContent, rightScale); ViewHelper.setScaleY(mContent (mMenu, leftScale); // ViewHelper.setScaleY(mMenu, leftScale); // ViewHelper.setAlpha(mMenu ViewHelper.setPivotX(mContent, 0); // ViewHelper.setPivotY(mContent, mContent.getHeight()
(mLeftContent, evaluate(percent, 0.5f, 1.0f)); ViewHelper.setScaleY(mLeftContent, 0.5f + 0.5f * percent ); // 平移动画: -mWidth / 2.0f -> 0.0f ViewHelper.setTranslationX(mLeftContent, evaluate(percent, -mWidth / 2.0f, 0)); // 透明度: 0.5 -> 1.0f ViewHelper.setAlpha(mLeftContent, evaluate(percent, 0.5f, 1.0f)); 主面板: 缩放动画 // 1.0f -> 0.8f ViewHelper.setScaleX(mMainContent, evaluate(percent, 1.0f, 0.8f)); ViewHelper.setScaleY onDraging(float percent) { Log.d(TAG, "onDraging: " + percent);// 0 -> 1 // 更新图标的透明度 // 1.0 -> 0.0 ViewHelper.setAlpha
; import static com.nineoldandroids.view.ViewHelper.setTranslationX; import android.content.Context (mDownView, deltaX); // 透明度渐变 ViewHelper.setAlpha(mDownView, Math.max(0f, Math.min(1f //这段代码很重要,因为我们并没有将item从ListView中移除,而是将item的高度设置为0 //所以我们在动画执行完毕之后将item设置回来 ViewHelper.setAlpha && Math.abs(deltaY) < mSlop这个条件时候,我们用一个布尔值mSwiping来标记Item现在处于水平滑动的状态,这时候我们需要处理Item跟随手指的滑动而滑动的逻辑,我们使用ViewHelper Android系统的API还是NineOldandroids中自己实现的API使得View滑动的效果,NineOldandroids中主要使用Camera(可以实现各种复杂动画效果的类),我们直接使用ViewHelper
* percent); // mLeftContent.setScaleY(0.5f + 0.5f * percent); ViewHelper.setScaleX (mLeftContent, evaluate(percent, 0.5f, 1.0f)); ViewHelper.setScaleY(mLeftContent, evaluate(percent, -mWidth / 2.0f, 0)); // 透明度: 0.5 -> 1.0f ViewHelper.setAlpha 主面板: 缩放动画 // 1.0f -> 0.8f ViewHelper.setScaleX(mMainContent, evaluate(percent, 1.0f, 0.8f)); ViewHelper.setScaleY(mMainContent, evaluate(percent
1.3.9 辅助操作视图的ViewHelper类 ViewHelper类用于辅助操作视图。使用ViewHelper类可在AS文件中修改其他MXML文件中的视图。 ViewHelper类中定义了两个成员变量:view和id View变量为Object类型,存储了使用ViewHelper类的MXML文件的全部组件视图,id变量为ViewHelper类的标识符,ViewHelper 撤销注册视图 以下代码是ViewHelper类的定义代码。 ViewHelper类实现接口IMXMLObject,首先自定义一个ViewHelper,然后在视图中引用它。 图6.1.6 使用ViewHelper 在上例中,查询完毕,查询按钮的文字就变成了删除,通过ViewHelper 和ViewLocator的结合使用,就可以在Command中获取视图的引用。
android.util.AttributeSet; import android.util.Log; import android.view.View; import com.nineoldandroids.view.ViewHelper 如果手指从左到右的滑动(切换到前一个):720-0 */ mTrans = -getWidth() - getPageMargin() + positionOffsetPixels; ViewHelper.setScaleX (right, mScale); ViewHelper.setScaleY(right, mScale); ViewHelper.setTranslationX(right, mTrans)
DialogViewHelper getViewHelper() { return mViewHelper; } /** * 设置View的辅助 * @param viewHelper */ public void setDialogViewHelper(DialogViewHelper viewHelper) { this.mViewHelper = viewHelper; } /** * 设置文本 * @param viewId * @param text */ public void
在Android中设置View的背景在SDK15及以下和以上和的API是不一样的,在之前的RN版本中没有做差异判断,所以会导致在低版本设置背景的Bug,在0.50及以上版本底层实现上添加了ViewHelper 工具类,当设置背景时会根据当前SDK版本是16及以上或以下进行做不同的处理; public class ViewHelper { public static void setBackground
在Android中设置View的背景在SDK15及以下和以上和的API是不一样的,在之前的RN版本中没有做差异判断,所以会导致在低版本设置背景的Bug,在0.50及以上版本底层实现上添加了ViewHelper 工具类,当设置背景时会根据当前SDK版本是16及以上或以下进行做不同的处理; 处理的源码如下: public class ViewHelper { public static void setBackground
(mLeftContent, evaluate(percent, 0.5f, 1.0f)); ViewHelper.setScaleY(mLeftContent, 0.5f + 0.5f * percent); // 平移动画: -mWidth / 2.0f -> 0.0f ViewHelper.setTranslationX(mLeftContent, evaluate (percent, -mWidth / 2.0f, 0)); // 透明度: 0.5 -> 1.0f ViewHelper.setAlpha(mLeftContent, evaluate 主面板: 缩放动画 // 1.0f -> 0.8f ViewHelper.setScaleX(mMainContent, evaluate(percent, 1.0f, 0.8f)) ; ViewHelper.setScaleY(mMainContent, evaluate(percent, 1.0f, 0.8f)); // > 3.
struct ViewHelper: UIViewControllerRepresentable { func makeUIViewController(context _: Context) MyLayout(name: "inner") { let _ = print("inner evaluate") ViewHelper
struct ViewHelper: UIViewControllerRepresentable { func makeUIViewController(context _: Context) - MyLayout(name: "inner") { let _ = print("inner evaluate") ViewHelper
(mLeftContent, evaluate(percent, 0.5f, 1.0f)); ViewHelper.setScaleY(mLeftContent, 0.5f + 0.5f * percent); // 平移动画: -mWidth / 2.0f -> 0.0f ViewHelper.setTranslationX(mLeftContent, evaluate (percent, -mWidth / 2.0f, 0)); // 透明度: 0.5 -> 1.0f ViewHelper.setAlpha(mLeftContent, evaluate 主面板: 缩放动画 // 1.0f -> 0.8f ViewHelper.setScaleX(mMainContent, evaluate(percent, 1.0f, 0.8f)) ; ViewHelper.setScaleY(mMainContent, evaluate(percent, 1.0f, 0.8f)); // > 3.
com.nineoldandroids.animation.Animator; import com.nineoldandroids.animation.ObjectAnimator; import com.nineoldandroids.view.ViewHelper */ public void startAnim() { isStopAnim = false; // 启动动画之前先恢复初始状态 ViewHelper.setTranslationX
用“计算机科学领域的任何问题都可以通过增加一个中间层来解决”这句话来说,我们可以再定义一个ViewHelper作为中间层,将base case与activity/Fragment视图绑定,集中处理base
onDraging: " + percent);// 0 -> 1 // 更新图标的透明度 // 1.0 -> 0.0 ViewHelper.setAlpha
(4)动画兼容库nineoldandroids中的ViewHelper类提供了很多的get/set方法来为属性动画服务,例如setTranslationX和setTranslationY方法,这些方法是没有版本要求的
setDuration(TRANSLATE_DURATION_MILLIS) .translationY(translationY); } else { ViewHelper.setTranslationY
值得注意的是,目前setTranslationX方法只能在Android 3.0以上版本使用,如果采用动画兼容库nineoldandroid中ViewHelper类提供的setTranslation方法
值得注意的是,目前setTranslationX方法只能在Android 3.0以上版本使用,如果采用动画兼容库nineoldandroid中ViewHelper类提供的setTranslation方法