当前位置: 首页 > news >正文

蒙城做网站赣州宏达网站建设

蒙城做网站,赣州宏达网站建设,千万别学视觉传达设计,系统首页设计图原理#xff1a;使用ValueAnimator属性动画类实现#xff0c;它通过值的改变手动设置对象的属性值来实现动画效果。直接贴代码#xff1a; public static void doNumberAnim(TextView tvPrice, float startNumber, float endNumber) {ValueAnimator animator ValueAnimato…原理使用ValueAnimator属性动画类实现它通过值的改变手动设置对象的属性值来实现动画效果。直接贴代码 public static void doNumberAnim(TextView tvPrice, float startNumber, float endNumber) {ValueAnimator animator ValueAnimator.ofFloat(startNumber, endNumber);animator.setDuration(800);animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {Overridepublic void onAnimationUpdate(ValueAnimator animation) {tvPrice.setText(animation.getAnimatedValue().toString());}});animator.start(); } 对于官网解释如下 This class provides a simple timing engine for running animations which calculate animated values and set them on target objects. There is a single timing pulse that all animations use. It runs in a custom handler to ensure that property changes happen on the UI thread. By default, ValueAnimator uses non-linear time interpolation, via the AccelerateDecelerateInterpolator class, which accelerates into and decelerates out of an animation. This behavior can be changed by calling setInterpolator. Animators can be created from either code or resource files. Here is an example of a ValueAnimator resource file: ValueAnimator also supports the use of a combination of PropertyValuesHolder and Keyframe resource tags to create a multi-step animation. Note that you can specify explicit fractional values (from 0 to 1) for each keyframe to determine when, in the overall duration, the animation should arrive at that value. Alternatively, you can leave the fractions off and the keyframes will be equally distributed within the total duration: 此类提供了一个简单的计时引擎用于运行动画这些动画计算动画值并将其设置在目标对象上。 所有动画都使用单个定时脉冲。它在自定义处理程序中运行以确保属性更改发生在 UI 线程上。 默认情况下ValueAnimator 通过类使用非线性时间插值该插值加速到动画中从动画中减速。可以通过调用 来更改此行为。AccelerateDecelerateInterpolatorsetInterpolator 可以从代码或资源文件创建动画器。下面是 ValueAnimator 资源文件的示例 ValueAnimator 还支持使用 and 资源标记的组合来创建多步骤动画。请注意您可以为每个关键帧指定显式小数值从 0 到 1以确定动画在整个持续时间内何时应达到该值。或者您可以关闭分数关键帧将在总持续时间内均匀分布PropertyValuesHolderKeyframe 总结 常数 static final int INFINITE  -1 此值与属性一起使用以无限期地重复动画。setRepeatCount static final int RESTART  1 当动画到达末尾并且为 INFINITE 或正值时动画将从开头重新启动。repeatCount static final int REVERSE  2 当动画到达末尾并且为无限值或正值时动画在每次迭代时都会反转方向。repeatCount 公共构造函数 ValueAnimator() 创建一个新的 ValueAnimator 对象。 公共方法 static boolean areAnimatorsEnabled() 返回系统范围的动画器当前是否已启用。 void cancel() 取消动画。 NonNull ValueAnimator clone() void end() 结束动画。 float getAnimatedFraction() 返回当前动画分数这是动画上最近帧更新中使用的经过/插值分数。 NonNull Object getAnimatedValue() 当只有一个属性被动画化时由此计算的最新值。ValueAnimator Nullable Object getAnimatedValue(NonNull String propertyName) 由此计算的最新值为 。ValueAnimatorpropertyName long getCurrentPlayTime() 获取动画在时间中的当前位置该位置等于当前时间减去动画开始的时间。 long getDuration() 获取动画的长度。 static long getFrameDelay() 动画的每一帧之间的时间量以毫秒为单位。 Nullable Interpolator getInterpolator() 返回此值动画器使用的计时插值器。 NonNull String getNameForTrace() 返回此动画器的名称以进行调试。 int getRepeatCount() 定义动画应重复的次数。 int ValueAnimator.RepeatModegetRepeatMode() 定义此动画到达末尾时应执行的操作。 long getStartDelay() 调用延迟启动动画的时间量以毫秒为单位。start long getTotalDuration() 获取动画的总持续时间包括动画序列、开始延迟和重复。 NonNull PropertyValuesHolder[] getValues() 返回此值动画器在其间进行动画处理的值。 boolean isRunning() 返回此动画器当前是否正在运行已启动并已超过任何初始启动延迟周期且尚未结束。 boolean isStarted() 返回此动画器是否已启动和尚未结束。 static NonNull ValueAnimator ofArgb(NonNull int[] values) 构造并返回一个在颜色值之间进行动画处理的 ValueAnimator。 static NonNull ValueAnimator ofFloat(NonNull float[] values) 构造并返回一个在浮点值之间进行动画处理的 ValueAnimator。 static NonNull ValueAnimator ofInt(NonNull int[] values) 构造并返回一个在 int 值之间进行动画处理的 ValueAnimator。 static NonNull ValueAnimator ofObject(NonNull TypeEvaluator evaluator, NonNull Object[] values) 构造并返回一个在对象值之间进行动画处理的 ValueAnimator。 static NonNull ValueAnimator ofPropertyValuesHolder(NonNull PropertyValuesHolder[] values) 构造并返回一个 ValueAnimator该动画器在 PropertyValuesHolder 对象中指定的值之间进行动画处理。 void pause() 暂停正在运行的动画。 void resume() 恢复暂停的动画使动画师在暂停时从中断的位置继续。 void reverse() 反向播放 ValueAnimator。 void setCurrentFraction(float fraction) 将动画的位置设置为指定的分数。 void setCurrentPlayTime(long playTime) 将动画的位置设置为指定的时间点。 NonNull ValueAnimator setDuration(long duration) 设置动画的长度。 void setEvaluator(NonNull TypeEvaluator value) 计算此动画的动画值时要使用的类型赋值器。 void setFloatValues(NonNull float[] values) 设置将在浮点值之间进行动画处理。 static void setFrameDelay(long frameDelay) 动画的每一帧之间的时间量以毫秒为单位。 void setIntValues(NonNull int[] values) 设置将在两者之间进行动画处理的 int 值。 void setInterpolator(Nullable Interpolator value) 用于计算此动画的经过分数的插值器。 void setNameForTrace(NonNull String animationName) 设置要在系统跟踪中显示的动画的名称。 void setObjectValues(NonNull Object[] values) 设置要对此动画进行动画处理的值。 void setRepeatCount(int value) 设置动画应重复的次数。 void setRepeatMode(ValueAnimator.RepeatMode int value) 定义此动画到达末尾时应执行的操作。 void setStartDelay(long startDelay) 调用延迟启动动画的时间量以毫秒为单位。start void setValues(NonNull PropertyValuesHolder[] values) 设置每个属性之间的值。 void start() 启动此动画。 NonNull String toString() 继承的常量 来自androidx.core.animation.Animator 继承的方法 来自androidx.core.animation.Animator 常数 无限INFINITE public static final int INFINITE -1 此值与属性一起使用以无限期地重复动画。setRepeatCount 重新启动RESTART public static final int RESTART 1 当动画到达末尾并且为 INFINITE 或正值时动画将从开头重新启动。repeatCount 反向REVERSE public static final int REVERSE 2 当动画到达末尾并且为无限值或正值时动画在每次迭代时都会反转方向。repeatCount 公共构造函数 ValueAnimator public ValueAnimator() 创建一个新的 ValueAnimator 对象。此默认构造函数主要用于内部;采用参数的工厂方法通常更有用。 公共方法 areAnimatorsEnabled public static boolean areAnimatorsEnabled() 返回系统范围的动画器当前是否已启用。默认情况下所有动画器都处于启用状态。如果用户将开发人员选项设置为将动画器持续时间比例设置为 0或者启用电池保存模式禁用所有动画则这可能会更改。 开发人员通常不需要调用此方法但如果应用希望在禁用动画器时显示不同的体验则可以将此返回值用作要提供的体验的决策程序。 返回boolean 布尔值 当前是否启用动画器。默认值为 。true 取消 public void cancel() 取消动画。与 不同会导致动画停止在其轨道上向其侦听器发送 然后发送消息。endcancel()onAnimationCancelonAnimationEnd 必须在运行动画的线程上调用此方法。 克隆 public NonNull ValueAnimator clone() 结束 public void end() 结束动画。这会导致动画分配要进行动画处理的属性的结束值然后在其侦听器上调用该方法。onAnimationEnd 必须在运行动画的线程上调用此方法。 getAnimatedFraction public float getAnimatedFraction() 返回当前动画分数这是动画上最近帧更新中使用的经过/插值分数。 返回float 动画的经过/插值部分。 getAnimatedValue public NonNull Object getAnimatedValue() 当只有一个属性被动画化时由此计算的最新值。此值仅在动画运行时是合理的。此只读属性的主要用途是在计算值后立即从调用 期间检索值该值在每个动画帧期间调用。ValueAnimatorValueAnimatoronAnimationUpdate 返回NonNull Object animatedValue 最近由此值为要进行动画处理的单个属性计算的值。如果有多个属性正在进行动画处理由构造函数中的多个 PropertyValuesHolder 对象指定则此函数返回其中第一个对象的动画值。ValueAnimator getAnimatedValue public Nullable Object getAnimatedValue(NonNull String propertyName) 由此计算的最新值为 。此只读属性的主要用途是在计算值后立即从调用 期间检索值该值在每个动画帧期间调用。ValueAnimatorpropertyNameValueAnimatoronAnimationUpdate 返回Nullable Object animatedValue 最近由 .ValueAnimator getCurrentPlayTime public long getCurrentPlayTime() 获取动画在时间中的当前位置该位置等于当前时间减去动画开始的时间。尚未启动的动画将返回零值除非动画已通过 或 设置了播放时间在这种情况下它将返回设置的时间。setCurrentPlayTimesetCurrentFraction 返回long 动画时间中的当前位置。 getDuration 获取动画的长度。默认持续时间为 300 毫秒。 返回long 动画的长度以毫秒为单位。 getFrameDelay public static long getFrameDelay() 动画的每一帧之间的时间量以毫秒为单位。这是动画将尝试遵守的请求时间但帧之间的实际延迟可能会有所不同具体取决于系统负载和功能。这是一个静态函数因为相同的延迟将应用于所有动画因为它们都是从单个计时循环运行的。当动画系统使用外部计时源如显示刷新率 vsync来控制动画时可以忽略帧延迟。请注意应从调用的同一线程调用此方法以便检查该动画的帧延迟。如果调用线程没有 Looper则会引发运行时异常。start 返回long 帧之间的请求时间以毫秒为单位 getInterpolator public Nullable Interpolator getInterpolator() 返回此值动画器使用的计时插值器。 返回Nullable Interpolator 此值动画器的计时插值器。 getNameForTrace public NonNull String getNameForTrace() 返回此动画器的名称以进行调试。 getRepeatCount span stylecolor:var(--devsite-code-color)public int a data-cke-saved-hrefhttps://developer.android.google.cn/reference/androidx/core/animation/ValueAnimator#getRepeatCount() hrefhttps://developer.android.google.cn/reference/androidx/core/animation/ValueAnimator#getRepeatCount()getRepeatCount/a()/span 定义动画应重复的次数。默认值为 0。 返回int 动画应重复的次数或INFINITE getRepeatMode ValueAnimator.RepeatMode public int getRepeatMode() 定义此动画到达末尾时应执行的操作。 返回int 或REVERSERESTART getStartDelay public long getStartDelay() 调用延迟启动动画的时间量以毫秒为单位。start 返回long 延迟运行动画的毫秒数 getTotalDuration public long getTotalDuration() 获取动画的总持续时间包括动画序列、开始延迟和重复。 当动画无限重复时或者当任何子动画师重复时通过 } 到 总持续时间将为 。否则总持续时间是开始延迟和动画运行时间的总和即一次迭代的持续时间乘以迭代次数。setRepeatCountINFINITEDURATION_INFINITE 返回long 动画完成所需的总时间从调用的时间开始。 如果动画或任何子动画无限重复将返回。startDURATION_INFINITE getValues public NonNull PropertyValuesHolder[] getValues() 返回此值动画器在其间进行动画处理的值。这些值存储在 PropertyValuesHolder 对象中即使 ValueAnimator 是使用简单的值对象列表创建的。 返回NonNull PropertyValuesHolder[] PropertyValuesHolder[] 一个 PropertyValuesHolder 对象的数组这些对象保存定义动画的每个属性的值。 isRunning public boolean isRunning() 返回此动画器当前是否正在运行已启动并已超过任何初始启动延迟周期且尚未结束。 返回boolean 动画器是否正在运行。 isStarted public boolean isStarted() 返回此动画器是否已启动和尚未结束。对于可重用的动画师除了 生成的单次动画师之外大多数动画师都是此状态是 的超集因为非零的动画师将在延迟阶段返回 true而只有在延迟阶段完成后才会返回 true。不可重用的动画器在启动后将始终返回 true因为它们无法返回到非启动状态。createCircularReveal()isRunningstartDelayisStartedisRunning 返回boolean 动画器是否已启动和尚未结束。 ofArgb public static NonNull ValueAnimator ofArgb(NonNull int[] values) 构造并返回一个在颜色值之间进行动画处理的 ValueAnimator。单个值意味着该值是要动画到的值。但是这在 ValueAnimator 对象中通常没有用处因为对象无法确定动画的起始值与 ObjectAnimator 不同ObjectAnimator 可以从要设置动画的目标对象和属性派生该值。因此通常应有两个或多个值。 参数NonNull int[] values 动画将随时间推移在其之间设置动画效果的一组值。 返回NonNull ValueAnimator 一个 ValueAnimator 对象该对象设置为在给定值之间进行动画处理。 浮点数 public static NonNull ValueAnimator ofFloat(NonNull float[] values) 构造并返回一个在浮点值之间进行动画处理的 ValueAnimator。单个值意味着该值是要动画到的值。但是这在 ValueAnimator 对象中通常没有用处因为对象无法确定动画的起始值与 ObjectAnimator 不同ObjectAnimator 可以从要设置动画的目标对象和属性派生该值。因此通常应有两个或多个值。 参数NonNull float[] values 动画将随时间推移在其之间设置动画效果的一组值。 返回NonNull ValueAnimator 一个 ValueAnimator 对象该对象设置为在给定值之间进行动画处理。 ofInt public static NonNull ValueAnimator ofInt(NonNull int[] values) 构造并返回一个在 int 值之间进行动画处理的 ValueAnimator。单个值意味着该值是要动画到的值。但是这在 ValueAnimator 对象中通常没有用处因为对象无法确定动画的起始值与 ObjectAnimator 不同ObjectAnimator 可以从要设置动画的目标对象和属性派生该值。因此通常应有两个或多个值。 参数NonNull int[] values 动画将随时间推移在其之间设置动画效果的一组值。 返回NonNull ValueAnimator 一个 ValueAnimator 对象该对象设置为在给定值之间进行动画处理。 对象 public static NonNull ValueAnimator ofObject(NonNull TypeEvaluator evaluator, NonNull Object[] values) 构造并返回一个在对象值之间进行动画处理的 ValueAnimator。单个值意味着该值是要动画到的值。但是这在 ValueAnimator 对象中通常没有用处因为对象无法确定动画的起始值与 ObjectAnimator 不同ObjectAnimator 可以从要设置动画的目标对象和属性派生该值。因此通常应有两个或多个值。 注意Object 值存储为对原始对象的引用这意味着调用此方法后对这些对象的更改将影响动画器上的值。如果在调用此方法后对象将在外部发生突变则调用方应改为传递这些对象的副本。 由于 ValueAnimator 不知道如何在任意对象之间进行动画处理因此此工厂方法还采用 TypeEvaluator 对象ValueAnimator 将使用该对象来执行该插值。 参数NonNull TypeEvaluator evaluator 将在每个动画帧上调用的类型计算器以在对象值之间提供必要的插值以派生动画值。 NonNull Object[] values 动画将随时间推移在其之间设置动画效果的一组值。 返回NonNull ValueAnimator 一个 ValueAnimator 对象该对象设置为在给定值之间进行动画处理。 OfPropertyValuesHolder public static NonNull ValueAnimator ofPropertyValuesHolder(NonNull PropertyValuesHolder[] values) 构造并返回一个 ValueAnimator该动画器在 PropertyValuesHolder 对象中指定的值之间进行动画处理。 参数NonNull PropertyValuesHolder[] values 一组 PropertyValuesHolder 对象其值将随时间推移进行动画处理。 返回NonNull ValueAnimator 一个 ValueAnimator 对象该对象设置为在给定值之间进行动画处理。 暂停 public void pause() 暂停正在运行的动画。此方法只应在启动动画的同一线程上调用。如果动画尚未或已结束则忽略调用。暂停的动画可以通过调用 来恢复。 startedresume 参见resumeisPausedAnimator.AnimatorPauseListener 恢复 public void resume() 恢复暂停的动画使动画师在暂停时从中断的位置继续。此方法只应在启动动画的同一线程上调用。对当前未暂停的动画器进行 resume 的调用将被忽略。 参见pauseisPausedAnimator.AnimatorPauseListener 反向 public void setCurrentFraction(float fraction) 反向播放 ValueAnimator。如果动画已在运行它将自行停止并从调用 reverse 时达到的点向后播放。如果动画当前未运行则它将从末尾开始并向后播放。此行为仅针对当前动画设置;动画的未来播放将使用向前播放的默认行为。 设置电流分数 public void setCurrentFraction(float fraction) 将动画的位置设置为指定的分数。此分数应介于 0 和动画的总分数之间包括任何重复。也就是说分数 0 会将动画定位在重复一次的反转动画器的开头值 1 定位在末尾值 2 定位在末尾。如果动画尚未启动则在设置为此分数后它将不会向前前进;它只需将分数设置为此值并根据该分数执行任何适当的操作。如果动画已经在运行则 setCurrentFraction 会将当前分数设置为此值并从该点继续播放。 由于更改分数不会调用事件;这些事件仅在动画运行时处理。androidx.core.animation.Animator.AnimatorListener 参数float fraction 动画前进或倒带到的分数。动画师的最大分数范围之外的值将被钳制到正确的范围。 设置当前播放时间 public void setCurrentPlayTime(long playTime) 将动画的位置设置为指定的时间点。此时间应介于 0 和动画的总持续时间包括任何重复之间。如果动画尚未启动则设置为此时后将不再前进;它只会将时间设置为此值并根据该时间执行任何适当的操作。如果动画已在运行则 setCurrentPlayTime 会将当前播放时间设置为此值并从该点继续播放。 参数long playTime 动画前进或倒带的时间以毫秒为单位。 设置持续时间 public NonNull ValueAnimator setDuration(long duration) 设置动画的长度。默认持续时间为 300 毫秒。 参数long duration 动画的长度以毫秒为单位。此值不能为负数。 返回NonNull ValueAnimator ValueAnimator 使用 setDuration 调用的对象。通过此返回值可以更轻松地将构造语句组合在一起然后设置持续时间如 中所示。ValueAnimator.ofInt(0, 10).setDuration(500).start() setEvaluator public void setEvaluator(NonNull TypeEvaluator value) 计算此动画的动画值时要使用的类型赋值器。系统将根据构造函数中的类型和自动分配浮点数或整数赋值器。但是如果这些值不是这些基元类型之一或者需要不同的计算例如表示颜色的 int 值所必需的则需要分配自定义计算器。例如在对颜色值运行动画时应使用 来获取正确的 RGB 颜色插值。startValueendValueArgbEvaluator 如果此值动画器之间只有一组值进行动画处理则此赋值器将用于该集。如果有几组值正在进行动画处理例如在 ValueAnimator 上设置了 PropertyValuesHolder 对象则赋值器仅分配给第一个 PropertyValuesHolder 对象。 参数NonNull TypeEvaluator value 此动画要使用的赋值器 设置浮点值 public void setFloatValues(NonNull float[] values) 设置将在浮点值之间进行动画处理。单个值意味着该值是要动画到的值。但是这在 ValueAnimator 对象中通常没有用处因为对象无法确定动画的起始值与 ObjectAnimator 不同ObjectAnimator 可以从要设置动画的目标对象和属性派生该值。因此通常应有两个或多个值。 如果已经通过多个 PropertyValuesHolder 对象为此 ValueAnimator 定义了多组值则此方法将为其中第一个对象设置值。 参数NonNull float[] values 动画将随时间推移在其之间设置动画效果的一组值。 设置帧延迟 public static void setFrameDelay(long frameDelay) 动画的每一帧之间的时间量以毫秒为单位。这是动画将尝试遵守的请求时间但帧之间的实际延迟可能会有所不同具体取决于系统负载和功能。这是一个静态函数因为相同的延迟将应用于所有动画因为它们都是从单个计时循环运行的。当动画系统使用外部计时源如显示刷新率 vsync来控制动画时可以忽略帧延迟。请注意应从调用的同一线程调用此方法以使新的帧延迟对该动画生效。如果调用线程没有 Looper则会引发运行时异常。start 参数long frameDelay 帧之间的请求时间以毫秒为单位 设置整数值 public void setIntValues(NonNull int[] values) 设置将在两者之间进行动画处理的 int 值。单个值意味着该值是要动画到的值。但是这在 ValueAnimator 对象中通常没有用处因为对象无法确定动画的起始值与 ObjectAnimator 不同ObjectAnimator 可以从要设置动画的目标对象和属性派生该值。因此通常应有两个或多个值。 如果已经通过多个 PropertyValuesHolder 对象为此 ValueAnimator 定义了多组值则此方法将为其中第一个对象设置值。 参数NonNull int[] values 动画将随时间推移在其之间设置动画效果的一组值。 设置插值器 public void setInterpolator(Nullable Interpolator value) 用于计算此动画的经过分数的插值器。插值器确定动画是以线性运动还是非线性运动如加速和减速运行。默认值为AccelerateDecelerateInterpolator 参数Nullable Interpolator value 此动画要使用的插值器。值 将导致线性插值。null 设置名称跟踪 public void setNameForTrace(NonNull String animationName) 设置要在系统跟踪中显示的动画的名称。这使特定动画在系统跟踪中可识别。 参数NonNull String animationName 使实例在系统跟踪中可识别的动画的名称 设置对象值 public void setObjectValues(NonNull Object[] values) 设置要对此动画进行动画处理的值。单个值意味着该值是要动画到的值。但是这在 ValueAnimator 对象中通常没有用处因为对象无法确定动画的起始值与 ObjectAnimator 不同ObjectAnimator 可以从要设置动画的目标对象和属性派生该值。因此通常应有两个或多个值。 注意Object 值存储为对原始对象的引用这意味着调用此方法后对这些对象的更改将影响动画器上的值。如果在调用此方法后对象将在外部发生突变则调用方应改为传递这些对象的副本。 如果已经通过多个 PropertyValuesHolder 对象为此 ValueAnimator 定义了多组值则此方法将为其中第一个对象设置值。 在 ValueAnimator 上应该设置一个 TypeEvaluator它知道如何在这些值对象之间进行插值。ValueAnimator 只知道如何在其他 setValues 方法中指定的基元类型之间进行插值。 参数NonNull Object[] values 要在其间进行动画处理的值集。 setRepeatCount public void setRepeatCount(int value) 设置动画应重复的次数。如果重复计数为 0则永远不会重复动画。如果重复计数大于 0 或 则将考虑重复模式。默认情况下重复计数为 0。INFINITE 参数int value 动画应重复的次数 设置重复模式 public void setRepeatMode(ValueAnimator.RepeatMode int value) 定义此动画到达末尾时应执行的操作。仅当重复计数大于 0 或 时才应用此设置。默认值为 。INFINITERESTART 参数ValueAnimator.RepeatMode int value RESTART或REVERSE 设置启动延迟 public void setStartDelay(long startDelay) 调用延迟启动动画的时间量以毫秒为单位。请注意启动延迟应始终为非负数。任何负启动延迟都将在 N 及以上时被钳制为 0。start 参数long startDelay 延迟量以毫秒为单位 设置值 public void setValues(NonNull PropertyValuesHolder[] values) 设置每个属性之间的值。此函数由采用值列表的 ValueAnimator 的构造函数在内部调用。但是可以在没有值的情况下构造 ValueAnimator并且可以调用此方法来手动设置值。 参数NonNull PropertyValuesHolder[] values 每个属性之间的值集。 开始 public void start() 启动此动画。如果动画具有非零 startDelay则动画将在该延迟过后开始运行。非延迟动画将立即设置其初始值然后调用此动画器的任何侦听器。onAnimationStart 通过调用此方法启动的动画将在调用此方法的线程上运行。此线程上应该有一个 Looper如果不是这种情况将引发运行时异常。此外如果动画将对视图层次结构中对象的属性进行动画处理则调用线程应该是该视图层次结构的 UI 线程。 到字符串 public NonNull String toString()
http://www.lebaoying.cn/news/88135.html

相关文章:

  • 时间轴 网站模板如何做电商生意
  • 做英语阅读的网站WordPress博客使用教程
  • 织梦网站如何做404网站建设管理员角色设置
  • 网站搜索框织梦仿站时怎么取俩个网站的页面整合
  • 怎么做网站百度经验phpcms 安装官网的教程更换域名后网站图片还是无法显示
  • 怎样做内网网站龙华做网站哪家便宜
  • seo关键词排名优化是什么镇江优化推广
  • 珠海网站建设公司网站开发与运用
  • 网站联系方式连接怎么做云服务器和网站备案
  • 一个小型网站设计济阳做网站
  • 网站建设后百度找不到eclipse tomcat 网站开发
  • 阿里巴巴网站图片怎么做的房地产网站推荐
  • 网站建设劳务协议如何用文件传输协议登陆网站
  • 企业网站制作前期需要什么资料做一家电商网站需要多少钱
  • 网站服务内容网站建设无锡网站优化
  • wordpress企业网站定制教程 一织梦中英文网站源码
  • 在线作图网站旅游手机网站建设智慧旅游
  • 织梦开发网站wordpress自定义代码在哪里
  • 网页版传奇网站网站建设之织梦后台熊掌号主页
  • 校园微网站建设方案ppt国外做免费的视频网站有哪些
  • 购物网站哪个最好wordpress编辑器修改
  • 可以做外链的图片网站电商关键字优化
  • vps 网站能打开南充房产交易网官网
  • 重庆手机网站方案设计成功的网络营销案例及分析
  • 如何构建成交型网站深圳网站设计公司让您放心省心
  • 公司做网站开发流程做网站的基本知识
  • 广平专业做网站php源码项目门户网站开发
  • 免费空间如何放网站成都网络推广建站
  • 展览网站模板大全网站托管
  • 网站群 seo中国建设监理协会网站会员专区