当前位置:首页 > 代码 > 正文

android滚动动画效果代码(html滚动效果代码)

admin 发布:2022-12-19 17:52 98


本篇文章给大家谈谈android滚动动画效果代码,以及html滚动效果代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Android的一段常用动画效果代码(如何让点击的图片控件加速飞入到指定位置)

首相要new一个这个图片image对象

然后用TranslateAnimation animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta)函数,将现在的的坐标和要移到的坐标写进去,然后用animation.setFillAfter(true);让图片停留在那。最后image.startAnimation(animation )就可以了,我是看见QQ 2011以前用过这个移动的动画做了一下,就是这么实现的

android怎么实现滑动效果

工具/原料

ViewFlipper类和OnGestureListener接口

animation动画效果translate和alpha

方法/步骤

1、设置布局文件,其中使用到ViewFlipper控件,内容如下:

?xml version="1.0" encoding="utf-8"?

RelativeLayout xmlns:android=""

xmlns:tools=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/background"

android:paddingBottom="@dimen/activity_optopns_vertical_margin"

android:paddingLeft="@dimen/activity_options_horizontal_margin"

android:paddingRight="@dimen/activity_options_horizontal_margin"

android:paddingTop="@dimen/activity_optopns_vertical_margin"

tools:context=".ImageFlipperActivity"

RelativeLayout

android:id="@id/rl_image_flipper_title"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

Button

android:id="@+id/btn_image_flipper_back"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_marginBottom="10dp"

android:background="@drawable/custom_button"

android:text="@string/back"

android:textColor="@color/textColor"

android:textSize="16sp"

android:visibility="visible" /

TextView

android:id="@id/tv_image_flipper_title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:text="@string/image_flipper"

android:textColor="@color/textColor"

android:textSize="30sp"

android:textStyle="bold" /

/RelativeLayout

LinearLayout

android:id="@id/ll_image_flipper_content"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_below="@id/rl_image_flipper_title"

android:layout_marginBottom="20dp"

android:layout_marginTop="20dp"

android:gravity="center"

android:orientation="vertical"

ViewFlipper

android:id="@id/vf_image_flipper"

android:layout_width="match_parent"

android:layout_height="match_parent" /

/LinearLayout

/RelativeLayout

2、从左边进入的动画文件,其内容如下:

?xml version="1.0" encoding="utf-8"?

set xmlns:android=""

!-- translate:画面转换位置移动动画效果 --

translate

android:duration="500"

android:fromXDelta="100%p"

android:toXDelta="0" /

!-- alpha:渐变透明度动画效果 --

alpha

android:duration="500"

android:fromAlpha="0.1"

android:toAlpha="1.0" /

/set

3、从左边退出的动画文件,其内容如下:

?xml version="1.0" encoding="utf-8"?

set xmlns:android=""

translate

android:duration="500"

android:fromXDelta="0"

android:toXDelta="-100%p" /

alpha

android:duration="500"

android:fromAlpha="1.0"

android:toAlpha="0.1" /

/set

4、从右边进入的动画文件,其内容如下:

?xml version="1.0" encoding="utf-8"?

set xmlns:android=""

translate

android:duration="500"

android:fromXDelta="-100%p"

android:toXDelta="0" /

alpha

android:duration="500"

android:fromAlpha="0.1"

android:toAlpha="1.0" /

/set

5、从右边退出的动画文件,其内容如下:

?xml version="1.0" encoding="utf-8"?

set xmlns:android=""

translate

android:duration="500"

android:fromXDelta="0"

android:toXDelta="100%p" /

alpha

android:duration="500"

android:fromAlpha="1.0"

android:toAlpha="0.1" /

/set

6、加载布局文件和动画文件的类,其源码内容为:

/**

*

*/

package com.i114gbox.aglieguy;

import android.content.Context;

import android.os.Bundle;

import android.view.GestureDetector;

import android.view.GestureDetector.OnGestureListener;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.animation.AnimationUtils;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.ViewFlipper;

import com.i114gbox.sdk.activity.I114gBoxActivity;

import com.i114gbox.sdk.utils.I114gBoxCollectActivityUtils;

import com.i114gbox.sdk.utils.I114gBoxLogUtils;

import com.i114gbox.sdk.utils.I114gBoxResourceUtils;

/**

* 图片滑动Activity

*

* @author SJC

*

*/

public class ImageFlipperActivity extends I114gBoxActivity implements

OnGestureListener {

private static String TAG = "ImageFlipperActivity";

private Context ctx = null;

private GestureDetector gestureDetector;// 手势监听

private ViewFlipper viewFlipper;// 视图轮播

@Override

protected void onCreate(Bundle savedInstanceState) {

I114gBoxLogUtils.d(TAG, "The onCreate method execute.");

super.onCreate(savedInstanceState);

I114gBoxCollectActivityUtils.getInstance().addActivity(this);// 收集Activity

ctx = this;

setContentView(I114gBoxResourceUtils.getLayoutId(ctx,

"activity_image_flipper"));

gestureDetector = new GestureDetector(this);

viewFlipper = (ViewFlipper) findViewById(I114gBoxResourceUtils.getId(

ctx, "vf_image_flipper"));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_01")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_02")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_03")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_04")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_05")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_06")));

// viewFlipper.addView(addImageView(R.drawable.one));

// viewFlipper.addView(addImageView(R.drawable.two));

// viewFlipper.addView(addImageView(R.drawable.three));

// viewFlipper.addView(addImageView(R.drawable.four));

// viewFlipper.addView(addImageView(R.drawable.five));

Button backButton = (Button) findViewById(I114gBoxResourceUtils.getId(

ctx, "btn_image_flipper_back"));

backButton.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

finish();

}

});

}

/** 添加ImageView控件 **/

private View addImageView(int id) {

ImageView imageView = new ImageView(this);

imageView.setImageResource(id);

return imageView;

}

@Override

public boolean onTouchEvent(MotionEvent event) {

I114gBoxLogUtils.d(TAG, "The onTouchEvent method execute.");

return gestureDetector.onTouchEvent(event);

}

@Override

public boolean onDown(MotionEvent e) {

I114gBoxLogUtils.d(TAG, "The onDown method execute.");

return false;

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

float velocityY) {

I114gBoxLogUtils.d(TAG, "The onFling method execute.");

I114gBoxLogUtils.i(TAG, "e1.x:" + e1.getX() + "|" + "e2.x:" + e2.getX()

+ "|" + "velocityX:" + velocityX + "|" + "velocityY:"

+ velocityY);

if (e1.getX() - e2.getX() 120) {

this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(ctx,

R.anim.push_left_in));// 进入屏幕的动画

this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(ctx,

R.anim.push_left_out));// 离开屏幕的动画

this.viewFlipper.showNext();// 手动显示下一个视图

return true;

} else if (e1.getX() - e2.getX() -120) {

this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(ctx,

R.anim.push_right_in));

this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(ctx,

R.anim.push_right_out));

this.viewFlipper.showPrevious();// 手动显示前一个视图

return true;

}

return false;

}

@Override

public void onLongPress(MotionEvent e) {

I114gBoxLogUtils.d(TAG, "The onLongPress method execute.");

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,

float distanceY) {

I114gBoxLogUtils.d(TAG, "The onScroll method execute.");

I114gBoxLogUtils.i(TAG, "e1.X:" + e1.getX() + "|" + "e2.X:" + e2.getX()

+ "|" + "distanceX:" + distanceX + "|" + "distanceY:"

+ distanceY);

return false;

}

@Override

public void onShowPress(MotionEvent e) {

I114gBoxLogUtils.d(TAG, "The onShowPress method execute.");

}

@Override

public boolean onSingleTapUp(MotionEvent e) {

I114gBoxLogUtils.d(TAG, "The onSingleTapUp method execute.");

return false;

}

}

怎么样有滑动效果 android

android的滑动效果是通过View容器类ViewFlipper来实现的。

ViewFilpper 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放。

又ViewAnimator继承至于FrameLayout的,所以ViewFilpper的Layout里面可以放置多个View,继承关系如下:

1、activity的写法如下:

import android.app.Activity;

import android.os.Bundle;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.view.ViewGroup.LayoutParams;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.widget.ImageView;

import android.widget.ViewFlipper;

public class ViewFlipperActivity extends Activity implements android.view.GestureDetector.OnGestureListener {

private int[] imgs = { R.drawable.img1, R.drawable.img2,

R.drawable.img3, R.drawable.img4, R.drawable.img5 };

private GestureDetector gestureDetector = null;

private ViewFlipper viewFlipper = null;

private Activity mActivity = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mActivity = this;

viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);

gestureDetector = new GestureDetector(this);    // 声明检测手势事件

for (int i = 0; i  imgs.length; i++) {          // 添加图片源

ImageView iv = new ImageView(this);

iv.setImageResource(imgs[i]);

iv.setScaleType(ImageView.ScaleType.FIT_XY);

viewFlipper.addView(iv, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

}

viewFlipper.setAutoStart(true);         // 设置自动播放功能(点击事件,前自动播放)

viewFlipper.setFlipInterval(3000);

if(viewFlipper.isAutoStart()  !viewFlipper.isFlipping()){

viewFlipper.startFlipping();

}

}

@Override

public boolean onTouchEvent(MotionEvent event) {

viewFlipper.stopFlipping();             // 点击事件后,停止自动播放

viewFlipper.setAutoStart(false);

return gestureDetector.onTouchEvent(event);         // 注册手势事件

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

if (e2.getX() - e1.getX()  120) {            // 从左向右滑动(左进右出)

Animation rInAnim = AnimationUtils.loadAnimation(mActivity, R.anim.push_right_in);  // 向右滑动左侧进入的渐变效果(alpha  0.1 - 1.0)

Animation rOutAnim = AnimationUtils.loadAnimation(mActivity, R.anim.push_right_out); // 向右滑动右侧滑出的渐变效果(alpha 1.0  - 0.1)

viewFlipper.setInAnimation(rInAnim);

viewFlipper.setOutAnimation(rOutAnim);

viewFlipper.showPrevious();

return true;

} else if (e2.getX() - e1.getX()  -120) {        // 从右向左滑动(右进左出)

Animation lInAnim = AnimationUtils.loadAnimation(mActivity, R.anim.push_left_in);       // 向左滑动左侧进入的渐变效果(alpha 0.1  - 1.0)

Animation lOutAnim = AnimationUtils.loadAnimation(mActivity, R.anim.push_left_out);     // 向左滑动右侧滑出的渐变效果(alpha 1.0  - 0.1)

viewFlipper.setInAnimation(lInAnim);

viewFlipper.setOutAnimation(lOutAnim);

viewFlipper.showNext();

return true;

}

return true;

}

@Override

public boolean onDown(MotionEvent e) {

return false;

}

@Override

public void onLongPress(MotionEvent e) {

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

return false;

}

@Override

public void onShowPress(MotionEvent e) {

}

@Override

public boolean onSingleTapUp(MotionEvent e) {

return false;

}

}

2、main.xml配置文件:

?xml version="1.0" encoding="utf-8"?

LinearLayout xmlns:android=""  

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" 

ViewFlipper

android:id="@+id/viewflipper"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/

/LinearLayout

以上完成了手势滑屏:

手势滑动屏幕动画,是通过android.view.GestureDetector类检测各种手势事件实现的,该类有两个回调接口(Interface)

A、GestureDetector.OnDoubleTapListener,用来通知DoubleTap双击事件,类似于鼠标的双击事件,接口三个抽象回调函数如下

1、onDoubleTap(MotionEvent e):DoubleTap双击手势事件后通知(触发)

2、onDoubleTapEvent(MotionEvent e):DoubleTap双击手势事件之间通知(触发),包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up事件,这两个事件由该函数通知)

3、onSingleTapConfirmed(MotionEvent e):用来判定该次点击是SingleTap而不是DoubleTap,如果连续点击两次就是DoubleTap手势;那么如果只点击一次,系统等待一段时间后没有收到第二次点击则判定该次点击为SingleTap而不是DoubleTap,此时触发的就是SingleTapConfirmed事件

android 怎么在轮播时实现多种动画效果,如第一张到第二张渐变,第二张到第三张旋转

Android系统自带的一个多页面管理控件,它可以实现子界面的自动切换:

首先 需要为ViewFlipper加入View

(1) 静态导入:在layout布局文件中直接导入

(2) 动态导入:addView()方法

ViewPlipper常用方法:

setInAnimation:设置View进入屏幕时候使用的动画

setOutAnimation:设置View退出屏幕时候使用的动画

showNext:调用该函数来显示ViewFlipper里面的下一个View

showPrevious:调用该函数来显示ViewFlipper里面的上一个View

setFlipInterval:设置View之间切换的时间间隔

startFlipping使用上面设置的时间间隔来开始切换所有的View,切换会循环进行

stopFlipping:停止View切换

讲了这么多,那么我们今天要实现的是什么呢?

(1) 利用ViewFlipper实现图片的轮播

(2) 支持手势滑动的ViewFlipper

我们需要先准备几张图片:把图片放进drawable中

创建两个动画:在res下面新建一个folder里面新建两个xml:

android开发怎么实现qq滑动删除动画效果

观察QQ的滑动删除效果,可以猜测可以滑动删除的部分主要包含两个部分,一个是内容区域(用于放置正常显示的view),另一个是操作区域(用于放置删除按钮)。默认情况下,操作区域是不显示的,内容区域的大小是填充整个容器,操作区域始终位于内容区域的右面。当开始滑动的时候,整个容器中的所有子view都像左滑动,如果操作区域此时是不可见的,设置为可见。

我的实现思路就是自定义一个layout SwipeLayout继承自FrameLayout。SwipeLayout包含两个子view,第一个子view是内容区域,第二个子view是操作区域。滑动效果的控制,主要就是通过检测SwipeLayout的touch事件来实现,这里我不想自己去通过监听touch事件来实现滑动效果,那是一个很繁琐的过程。Android support库里其实已经提供了一个很好的工具类来帮我们做这件事情ViewDragHelper。如果你看过Android原生的DrawerLayout的代码,就会发现DrawerLayout的滑动效果也是通过ViewDragHelper类实现的。

下面先介绍一下ViewDragHelper类的使用。

首先需要在容器中创建一个ViewDragHelper类的对象。

[java] view plain copy

mDragHelper = ViewDragHelper.create(this, 1.0f, new ViewDragHelper.Callback());

接下来要把容器的事件处理委托给ViewDragHelper对象

[java] view plain copy

@Override

public boolean onInterceptTouchEvent(MotionEvent event) {

if (mDragHelper.shouldInterceptTouchEvent(event)) {

return true;

}

return super.onInterceptTouchEvent(event);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

mDragHelper.processTouchEvent(event);

return true;

}

ViewDragHelper对象来决定motion event是否是属于拖动过程。如果motion event属于拖动过程,那么触摸事件就交给ViewDragHelper来处理,ViewDragHelper在处理拖动过程的时候,会调用ViewDragHelper.Callback对象的一系列方法。

我们可以通过ViewDragHelper.Callback来监听以下几种事件:

1.拖动的状态改变

2.被拖动的view的位置改变

3.被拖动的view被放开的时间和位置

ViewDragHelper.Callback还提供了几个方法用来影响拖动过程。

1.控制view可以拖动的范围

2.确定某个view是否可以拖动

好了,直接看代码分析吧。

在SwipeLayout的inflate事件中,获取到contentView和actionView。

[java] view plain copy

@Override

protected void onFinishInflate() {

contentView = getChildAt(0);

actionView = getChildAt(1);

actionView.setVisibility(GONE);

}

在SwipeLayout的measure事件中,设置拖动的距离为actionView的宽度。

[java] view plain copy

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

dragDistance = actionView.getMeasuredWidth();

}

定义DragHelperCallback extends ViewDragHelper.Callback

DragHelperCallback的tryCaptureView方法,用来确定contentView和actionView是可以拖动的

[java] view plain copy

@Override

public boolean tryCaptureView(View view, int i) {

return view == contentView || view == actionView;

}

DragHelperCallback的onViewPositionChanged在被拖动的view位置改变的时候调用,如果被拖动的view是contentView,我们需要在这里更新actionView的位置,反之亦然。

[java] view plain copy

@Override

public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) {

draggedX = left;

if (changedView == contentView) {

actionView.offsetLeftAndRight(dx);

} else {

contentView.offsetLeftAndRight(dx);

}

if (actionView.getVisibility() == View.GONE) {

actionView.setVisibility(View.VISIBLE);

}

invalidate();

}

DragHelperCallback的clampViewPositionHorizontal用来限制view在x轴上拖动,要实现水平拖动效果必须要实现这个方法,我们这里因为仅仅需要实现水平拖动,所以没有实现clampViewPositionVertical方法。

[java] view plain copy

@Override

public int clampViewPositionHorizontal(View child, int left, int dx) {

if (child == contentView) {

final int leftBound = getPaddingLeft();

final int minLeftBound = -leftBound - dragDistance;

final int newLeft = Math.min(Math.max(minLeftBound, left), 0);

return newLeft;

} else {

final int minLeftBound = getPaddingLeft() + contentView.getMeasuredWidth() - dragDistance;

final int maxLeftBound = getPaddingLeft() + contentView.getMeasuredWidth() + getPaddingRight();

final int newLeft = Math.min(Math.max(left, minLeftBound), maxLeftBound);

return newLeft;

}

}

DragHelperCallback的getViewHorizontalDragRange方法用来限制view可以拖动的范围

[java] view plain copy

@Override

public int getViewHorizontalDragRange(View child) {

return dragDistance;

}

DragHelperCallback的onViewReleased方法中,根据滑动手势的速度以及滑动的距离来确定是否显示actionView。smoothSlideViewTo方法用来在滑动手势之后实现惯性滑动效果

[java] view plain copy

@Override

public void onViewReleased(View releasedChild, float xvel, float yvel) {

super.onViewReleased(releasedChild, xvel, yvel);

boolean settleToOpen = false;

if (xvel AUTO_OPEN_SPEED_LIMIT) {

settleToOpen = false;

} else if (xvel -AUTO_OPEN_SPEED_LIMIT) {

settleToOpen = true;

} else if (draggedX = -dragDistance / 2) {

settleToOpen = true;

} else if (draggedX -dragDistance / 2) {

settleToOpen = false;

}

final int settleDestX = settleToOpen ? -dragDistance : 0;

viewDragHelper.smoothSlideViewTo(contentView, settleDestX, 0);

ViewCompat.postInvalidateOnAnimation(SwipeLayout.this);

}

android recyclerview 滑动到头的动画怎么实现的

1、有两种方法: (1)可参照: switch (action) {case MotionEvent.ACTION_DOWN:DownX = event.getX();//float DownXDownY = event.getY();//float DownYcurrentMS = System.currentTimeMillis();//long currentMS 获取系统时间break;case MotionEvent.ACTION_MOVE:float moveX = event.getX() - DownX;//X轴距离float moveY = event.getY() - DownY;//y轴距离long moveTime = System.currentTimeMillis() - currentMS搜索;//移动时间break;case MotionEvent.ACTION_UP:break;} (2)按照以下原理: 滑动其实只是不停的重绘图像,造成滑动的效果。滑动其实是处理手的触屏事件,在你的View里有onTouch事件,里面会MotionEvent对象,里面保存当前手的位置坐标,你根据这个坐标计算手滑动的距离,一般是在收到ACTION_DOWN时保存按下的位置,然后ACTION_MOVE会不停的上报,计算得出滑动距离。 2、RecyclerView简介: RecyclerView是v7的一个新控件。在v7.21+包中,是一个用来展示大量数据的组件,或者说,就是ListView的改善版本。RecyclerView本质上是以适配器为核心。缓存viewHolder,view包含在viewHolder内。自推出以来广受Android程序爱好者的推崇,然而不得不说这个控件存在着一个比较严重的问题,就是滑动的时候会有不可容忍的卡顿现象出现。 3、RecyclerView卡顿现象解决方法: 将耗时的操作放到recyclerview.setAdapter(adapter)之前运行,运行完后再将需要的参数传入Adapter里,此处重写一个adapter类继承Adapter就可以了。解决后运行,滑动恢复了流畅。

android滚动动画效果代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于html滚动效果代码、android滚动动画效果代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/16180.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载