精华内容
下载资源
问答
  • android进入应用程序时实现动画效果

    千次阅读 2013-02-08 18:44:52
    android很多应用程序在进入时会有动画效果,通常都是一张图片的渐入,和渐出效果,其实这并不是什么技术含量的活,下面看看如何实现“: 方法分为两步: 1.首先在main.xml里面放置一个ImageView,刚开始...

    android很多应用程序在进入时会有动画效果,通常都是一张图片的渐入,和渐出效果,其实这并不是什么技术含量的活,下面看看如何实现“:


    方法分为两步:


    1.首先在main.xml里面放置一个ImageView,刚开始设置为不可见

    2.在MainActiviy的onCreate里 放一个aplha动画,这样就Ok了


    代码如下:

    public class HomeDemoActivity extends Activity {   
      
        ImageView homeImage;   
      
        /** Called when the activity is first created. */  
        @Override  
        public void onCreate(Bundle savedInstanceState) {   
            super.onCreate(savedInstanceState);   
            setContentView(R.layout.main);   
      
            homeImage = (ImageView) findViewById(R.id.homeimg);   
      
            AlphaAnimation alphaAnimation = new AlphaAnimation((float) 0.1, 1);   
            alphaAnimation.setDuration(3000);//设定动画时间   
            alphaAnimation.setAnimationListener(new AnimationListener() {   
                @Override  
                public void onAnimationStart(Animation animation) {   
                }   
      
                @Override  
                public void onAnimationRepeat(Animation animation) {   
                }   
      
                @Override  
                public void onAnimationEnd(Animation animation) {   
                    homeImage.setVisibility(View.GONE);   
                }   
            });   
      
            homeImage.setAnimation(alphaAnimation);   
            homeImage.setVisibility(View.VISIBLE);   
        }   
    }  


    展开全文
  • 如果是使用ListView的话我们知道,可以很简单的实现加载的动画,但是使用android.support.v7.widget.RecyclerView 的话,暂时还不是很多,所以自己就实现了一个效果,先看图吧(第一次上传动态图片,不喜勿喷哦) ...

    如果是使用ListView的话我们知道,可以很简单的实现加载的动画,但是使用android.support.v7.widget.RecyclerView 话,暂时还不是很多,所以自己就实现了一个效果,先看图吧(第一次上传动态图片,不喜勿喷哦)


    图片有点模糊,但是能看到效果,那就是下面进入会有一个延迟的效果,下面看看代码吧;

    这是一个自定义的,能够上拉加载更多的RecyclerView

    package com.socks.jiandan.view;
    
    import android.content.Context;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.util.AttributeSet;
    
    import com.meyhuan.mytest.LoadFinishCallBack;
    import com.nostra13.universalimageloader.core.ImageLoader;
    
    /**
     * Created by meyhuan 15/4/9.
     */
    public class AutoLoadRecyclerView extends RecyclerView implements LoadFinishCallBack {
    
    	private onLoadMoreListener loadMoreListener;
    	private boolean isLoadingMore;
    
    	public AutoLoadRecyclerView(Context context) {
    		this(context, null);
    	}
    
    	public AutoLoadRecyclerView(Context context, AttributeSet attrs) {
    		this(context, attrs, 0);
    	}
    
    	public AutoLoadRecyclerView(Context context, AttributeSet attrs, int defStyle) {
    		super(context, attrs, defStyle);
    		isLoadingMore = false;
    		setOnScrollListener(new AutoLoadScrollListener(null, true, true));
    	}
    
    	/**
    	 * 如果需要显示图片,需要设置这几个参数,快速滑动时,暂停图片加载
    	 *
    	 * @param imageLoader
    	 * @param pauseOnScroll
    	 * @param pauseOnFling
    	 */
    	public void setOnPauseListenerParams(ImageLoader imageLoader, boolean pauseOnScroll, boolean pauseOnFling) {
    		setOnScrollListener(new AutoLoadScrollListener(imageLoader, pauseOnScroll, pauseOnFling));
    	}
    
    	public void setLoadMoreListener(onLoadMoreListener loadMoreListener) {
    		this.loadMoreListener = loadMoreListener;
    	}
    
    	@Override
    	public void loadFinish(Object obj) {
    		isLoadingMore = false;
    	}
    
    	public interface onLoadMoreListener {
    		void loadMore();
    	}
    
    	/**
    	 * 滑动自动加载监听器
    	 */
    	private class AutoLoadScrollListener extends OnScrollListener {
    
    		private ImageLoader imageLoader;
    		private final boolean pauseOnScroll;
    		private final boolean pauseOnFling;
    
    		public AutoLoadScrollListener(ImageLoader imageLoader, boolean pauseOnScroll, boolean pauseOnFling) {
    			super();
    			this.pauseOnScroll = pauseOnScroll;
    			this.pauseOnFling = pauseOnFling;
    			this.imageLoader = imageLoader;
    		}
    
    		@Override
    		public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    			super.onScrolled(recyclerView, dx, dy);
    
    			//由于GridLayoutManager是LinearLayoutManager子类,所以也适用
    			if (getLayoutManager() instanceof LinearLayoutManager) {
    				int lastVisibleItem = ((LinearLayoutManager) getLayoutManager()).findLastVisibleItemPosition();
    				int totalItemCount = AutoLoadRecyclerView.this.getAdapter().getItemCount();
    
    				//有回调接口,并且不是加载状态,并且剩下2个item,并且向下滑动,则自动加载
    				if (loadMoreListener != null && !isLoadingMore && lastVisibleItem >= totalItemCount -
    						2 && dy > 0) {
    					loadMoreListener.loadMore();
    					isLoadingMore = true;
    				}
    			}
    		}
    
    		@Override
    		public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    
    			if (imageLoader != null) {
    				switch (newState) {
    					case 0:
    						imageLoader.resume();
    						break;
    					case 1:
    						if (pauseOnScroll) {
    							imageLoader.pause();
    						} else {
    							imageLoader.resume();
    						}
    						break;
    					case 2:
    						if (pauseOnFling) {
    							imageLoader.pause();
    						} else {
    							imageLoader.resume();
    						}
    						break;
    				}
    			}
    		}
    	}
    
    
    }
    

    这是主Activity

    package com.meyhuan.mytest;
    
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.graphics.Bitmap;
    import android.preference.PreferenceManager;
    import android.support.v4.widget.SwipeRefreshLayout;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.support.v7.widget.DefaultItemAnimator;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    import com.lidroid.xutils.BitmapUtils;
    import com.lidroid.xutils.HttpUtils;
    import com.lidroid.xutils.exception.HttpException;
    import com.lidroid.xutils.http.ResponseInfo;
    import com.lidroid.xutils.http.callback.RequestCallBack;
    import com.lidroid.xutils.http.client.HttpRequest;
    import com.nostra13.universalimageloader.core.DisplayImageOptions;
    import com.nostra13.universalimageloader.core.ImageLoader;
    
    import java.util.ArrayList;
    
    
    public class MainActivity extends ActionBarActivity {
    
        com.socks.jiandan.view.AutoLoadRecyclerView mRecyclerView;
        SwipeRefreshLayout mSwipeRefreshLayout;
    
    
        private FreshNewsAdapter mAdapter;
        private LoadFinishCallBack mLoadFinisCallBack;
        private ImageLoader imageLoader;
        private DisplayImageOptions options;
    
        HttpUtils httpUtils = new HttpUtils();
        BitmapUtils bitmapUtils ;
    
        //是否是大图模式
        private static boolean isLargeMode = false;
        private int index =1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            bitmapUtils = new BitmapUtils(this);
    
            mRecyclerView = (com.socks.jiandan.view.AutoLoadRecyclerView) findViewById(R.id.recycler_view);
            mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
    
            mRecyclerView.setHasFixedSize(false);
            mRecyclerView.setItemAnimator(new DefaultItemAnimator());
            mLoadFinisCallBack = mRecyclerView;
            mRecyclerView.setLoadMoreListener(new com.socks.jiandan.view.AutoLoadRecyclerView.onLoadMoreListener() {
                @Override
                public void loadMore() {
                    mAdapter.loadNextPage();
                }
            });
    
            mSwipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
                    android.R.color.holo_green_light,
                    android.R.color.holo_orange_light,
                    android.R.color.holo_red_light);
    
            mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    mAdapter.loadFirst();
                }
            });
    
            mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    
    
            imageLoader = ImageLoader.getInstance();
    //        mRecyclerView.setOnPauseListenerParams(imageLoader, false, true);
    
    //        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
    //        isLargeMode = sp.getBoolean(SettingFragment.ENABLE_FRESH_BIG, true);
    
            int loadingResource;
    
            //大图模式
            if (isLargeMode) {
                loadingResource = R.drawable.ic_loading_large;
            } else {
                loadingResource = R.drawable.ic_loading_small;
            }
    
            options = new DisplayImageOptions.Builder()
                    .cacheInMemory(true)
                    .cacheOnDisk(true)
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .resetViewBeforeLoading(true)
                    .showImageOnLoading(loadingResource)
                    .build();
    
    
            mAdapter = new FreshNewsAdapter();
            mRecyclerView.setAdapter(mAdapter);
            mAdapter.loadFirst();
    
        }
    
        /**
         * 新鲜事适配器
         */
        public class FreshNewsAdapter extends RecyclerView.Adapter<ViewHolder> {
    
    //        private int page;
            private ArrayList<Goods> freshNewses;
            private int lastPosition = -1;
    
            public FreshNewsAdapter(ArrayList<Goods> freshNewses) {
                this.freshNewses = freshNewses;
            }
            public FreshNewsAdapter() {
                freshNewses = new ArrayList<Goods>();
            }
    
            private void setAnimation(View viewToAnimate, int position) {
                if (position > lastPosition) {
                    Animation animation = AnimationUtils.loadAnimation(viewToAnimate.getContext(), R
                            .anim.item_bottom_in);
                    viewToAnimate.startAnimation(animation);
                    lastPosition = position;
                }
            }
    
            @Override
            public void onViewDetachedFromWindow(ViewHolder holder) {
                super.onViewDetachedFromWindow(holder);
    
                    holder.ll_content.clearAnimation();
            }
    
            @Override
            public ViewHolder onCreateViewHolder(ViewGroup parent,
                                                 int viewType) {
                int layoutId;
                Log.e("Tag", "onCreateViewHolder");
    
                layoutId = R.layout.main_fragment_list_item;
                View v = LayoutInflater.from(parent.getContext())
                        .inflate(layoutId, parent, false);
                return new ViewHolder(v);
            }
    
            @Override
            public void onBindViewHolder(final ViewHolder holder, final int position) {
    
                if(freshNewses != null && freshNewses.size() > 0){
                    Goods freshNews = freshNewses.get(position);
    //            imageLoader.displayImage(freshNews.getImageUrl(), holder.img, options);
                    bitmapUtils.display( holder.img,freshNews.getImageUrl());
                    holder.tv_title.setText(freshNews.getAddress());
                    holder.tv_info.setText(freshNews.getPrice() + "@" );
    
    
                    setAnimation(holder.ll_content, position);
                }
                }
    
    
    
            @Override
            public int getItemCount() {
                return freshNewses.size();
            }
    
            public void loadFirst() {
                index = 1;
                loadData();
            }
    
            public void loadNextPage() {
                index++;
                loadData();
            }
    
    
    
        }
    
        public static class ViewHolder extends RecyclerView.ViewHolder {
    
            private TextView tv_title;
            private TextView tv_info;
            private TextView tv_views;
            private TextView tv_share;
            private ImageView img;
    
            private LinearLayout ll_content;
    
            public ViewHolder(View contentView) {
                super(contentView);
                tv_title = (TextView) contentView.findViewById(R.id.main_fragment_item_text1);
                tv_info = (TextView) contentView.findViewById(R.id.main_fragment_item_text2);
                tv_views = (TextView) contentView.findViewById(R.id.main_fragment_item_text3);
                img = (ImageView) contentView.findViewById(R.id.main_fragment_item_imageView);
    
                
                ll_content = (LinearLayout) contentView.findViewById(R.id.main_fragment_item_layout);
    
            }
        }
    
        private void loadData() {
    
            httpUtils.send(HttpRequest.HttpMethod.GET, Goods.URL_FRESH_NEWS + index, new RequestCallBack<String>() {
                @Override
                public void onSuccess(ResponseInfo<String> responseInfo) {
                    ArrayList<Goods> freshNewses = Goods.parse(responseInfo.result);
                    if (1 == index) {
                        mAdapter.freshNewses.clear();
                        mAdapter.freshNewses.addAll(freshNewses);
                    } else {
                        mAdapter.freshNewses.addAll(freshNewses);
                    }
    
                    mAdapter.notifyDataSetChanged();
    
                    if (mSwipeRefreshLayout.isRefreshing()) {
                        mSwipeRefreshLayout.setRefreshing(false);
                    }
    
                    mLoadFinisCallBack.loadFinish(null);
                }
    
                @Override
                public void onFailure(HttpException e, String s) {
    
                }
            });
    
        }
    
    
    }
    
    代码使用到了xUtils开源框架,关键是在 FreshNewsAdapter,的

     @Override
            public void onViewDetachedFromWindow(ViewHolder holder) {
                super.onViewDetachedFromWindow(holder);
    
                    holder.ll_content.clearAnimation();
            }

    方法里面要做这样的一步操作,也就是当View滑出屏幕的时候,要取消它的动画


    holder.ll_content.clearAnimation();

     
    
    不然会有卡顿的现象,之前为了这个,搞了很久,参考人家的代码后,现在终于正常了。

    这里不多说了,想深入的了解,那就下载代码去吧。

    点击下载源码








    展开全文
  • 首先我们需要注册一个账号,这里就不详细介绍,非常简单相信你一定能注册成功的,主要用到陌鱼社区:模拟延时摄影图片转GIF动画视频效果软件,如果我们需要制作成GIF动态图可以直接在Adobe Photoshop CC 2018软件导出...
    首先我们需要注册一个账号,这里就不详细介绍,非常简单相信你一定能注册成功的,主要用到陌鱼社区:模拟延时摄影图片转GIF动画视频效果软件,如果我们需要制作成GIF动态图可以直接在Adobe Photoshop CC 2018软件导出GIF格式文件。
    


    01、打开软件,点击中间的“+”-“创建绘图”。

    02、正式进入制作界面,点击中间的“+”,点击“PLOTAGRAPH”,上传我们需要制作的图片,然后点击创建。


    03、选择工具栏第04个工具,点击“动画点”,用“动画点”工具拉出我们需要制作部分动画的线条。



    04、用“稳定点/锚固点”点出我们不需要动的部分。


    05、点击中间播放(三角形)按钮浏览一下效果,如果感觉自己不满意可以继续使用“删除点”进行处理。

    06、接下来点击右边最后一个工具“导出图像”,点击“下一步”,点击“分享”。


    07、点击“左上角”我们的用户名,点击我们制作好动画视频,就可以看到我们制作好的效果了。



    展开全文
  • 手把手教你如何设置H5页面动画效果

    万次阅读 2017-03-23 10:55:34
    本文聚焦于基于微信传播的H5页面的动画设计,希望与大家进行交流探讨。  首先我们选择H5页面制作平台,以“应用之星”平台例。  第一步:进入网站,注册登录,点击“应用制作”,进入制作页面。   ...

         “H5”,这个由HTML5简化而来的词汇,借由微信这个移动社交平台,正在走进更多人的视野。本文聚焦于基于微信传播的H5页面的动画设计,希望与大家进行交流探讨。

      首先我们选择H5页面制作平台,以“应用之星”平台为例。

      第一步:进入网站,注册登录,点击“应用制作”,进入制作页面。

      

      第二步:选择“高级模式”,点“+”创建应用,或者直接选择模板使用。

      

      第三步:进入H5界面制作,根据你的需求选择控件使用。其中文本控件、图片控件、按钮控件、视频控件、图形控件、图组控件、表单控件、地图控件、拨号控件和投票控件都能设置动画。

      以“地图控件”为例来讲如何设置动画。

      其中时间是指动画持续播放的时间,比如你设置2秒,则播放2秒;

      延迟是指动画延迟播放的时间,比如你设置了延迟播放2秒,那么打开这个页面时,动画在2秒后才开始播放。注意一下先设置动画时间,再设置动画方式。

      

      另外图形控件和图片控件,设置动画时,若设置次数,则该动画播放的次数;若勾选循环方式,则动画效果无限循环,次数和循环只能选择一个使用,不能同时使用。

      

      第四步:当你一切制作好后,点击“发布”,进入预览页面,WEB二维码即生成的H5页面。在预览页面可以看看设置的动画效果,如果效果不好,点击“返回”修改;如果效果好的话,直接用微信二维码扫描分享至朋友圈。

      是不是很简单?有需要的朋友可以试试!

    展开全文
  • PPT动画教程:设置进入动画

    千次阅读 2016-06-08 14:13:20
     今天我们用动画的形式介绍在Powepoint演示...下面我们以设置“渐变式缩放”的进入动画为例,看看具体的设置过程。  1、选中需要设置动画的对象,执行“幻灯片放映→自定义动画”命令,展开“自定义动画”任务窗
  • 由于工作需要,要做一个图片浏览功能,左侧显示图片,右侧显示缩略图。现将大致做法介绍下。东湖 缩略图,没别的了 ,就是一个ListBox,左侧则是用一个canvas来显示图片
  • 在我模仿一个APP的时候,我发现在进入登录界面之前有一个动画,在我看了这个demo之后,我知道了如何实现,就写下了这篇博文。
  • 动画效果(一)-渐变动画

    千次阅读 2016-06-27 14:11:49
    安卓系统的界面动画效果丰富,最常用到到就是渐变动画。本文将详细的介绍如何定义和使用渐变动画。
  • iOS 动画大全(附带gif图片效果)

    千次阅读 2016-07-11 16:50:07
    总结了个人的开发经验,下面介绍最常用的动画打全(根据图片效果自行选用吧):UIImage类似美团袋鼠奔跑的动画 -(UIImageView *)imageView{ if (!_imageView) { _imageView = [[UIImageView alloc]init
  • 网页动画效果

    千次阅读 2017-04-28 09:47:12
    我想用网页直接做一个动画效果,不使用其他任何的工具,直接用记事本,然后用html,css和javascript之间的关系制作一个ppt放映时的动画效果,该效果是关于介绍沈阳师范大学软件学院学生会文艺部的。因为包含有...
  • 好看的android动画效果

    千次阅读 2018-10-15 14:30:26
    这段时间看到一些比较好看的android动画效果,下面我就给大家一些我比较喜欢的动画效果,并附上源码希望对你们有用处。 1.很简单却很酷的粒子破碎效果 介绍:  实现思路 1.新建一个 Bean Particle,表示一个...
  • 先来看进入详情页时的动画,从列表中所在 item 的位置一直放大到详情页的显示位置,这里我可以先告诉大家,当我们点击了这个 item 的时候,就已经启动了详情页,然后在详情页做相应的动画效果。既然是在详情页做动画...
  • 用svg动画实现图片点击效果以便在公众号文章中使用 需求 编辑喵先生跟我说他想实现一个想法,想在微信公众号文章中实现一个效果,点击图片,显示文字。问我可不可以做到。 困难 微信公众号的编辑器无法嵌入css代码...
  • 常见JS动画效果

    万次阅读 多人点赞 2017-09-27 14:06:15
    人们浏览网页时,若一个网页动画效果丰富炫酷,性能良好,体验度良好,自然会受到吸引去打来浏览。吸引用户,自然少不了网页的布局优美、色彩搭配的恰当,更重要的是其中吸引人的炫酷动画效果
  • Android 漂浮动画,下雪动画效果

    千次阅读 2016-12-24 11:57:45
    因工作需要最近在研究了动画,看到牛人博客,关于动画,自定义view,写的很详细,于是学习学习,来完成工作需求 1.先得了解下canvas.drawBi
  • CSS3实现动画效果

    千次阅读 2019-08-09 11:17:46
    今天要用css3实现元素左右晃动的效果,先看一下css3中关于动画的属性说明: ...在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改新样式的动画效果。 Internet Explorer 10、Firefox 以及 Oper...
  • 一、overridePendingTransition 我们之前讲的动画都是针对View的动画,其实在我们开启一个Activity的时候,我们也可以产生动画效果动画效果可以直接使用我们在 Android 动画效果(一): 四种动画基础(Alpha、...
  • vue 动画效果会闪动

    千次阅读 2018-08-07 09:13:09
    今天在写vue路由切换...上边的代码设置了改变透明度的动画过渡效果,但是默认的mode模式in-out模式,这并不是我想要的。mode模式。 过渡模式mode: in-out:新元素先进入过渡,完成之后当前元素过渡离开。 out-...
  • android炫酷的动画效果

    千次阅读 2018-07-06 13:51:50
    这段时间看到一些比较好看的android动画效果,下面我就给大家一些我比较喜欢的动画效果,并附上源码希望对你们有用处。1.很简单却很酷的粒子破碎效果介绍: 实现思路1.新建一个 Bean Particle,表示一个粒子对象;...
  • 炫酷动画效果

    千次阅读 2017-11-03 14:44:39
    1.很简单却很酷的粒子破碎效果 介绍: 实现思路 1.新建一个 Bean Particle,表示一个粒子对象;新建一个 View ExplosionField作为画布用来显示破碎的粒子;新建一个属性动画(ValueAnimator) Exp
  • css实现鼠标移入图片放大
  • iOS的GIF动画效果实现

    千次阅读 2017-02-07 17:28:54
    无论是在Web端还是在移动端都经常遇到,但是考虑目前iOS还无法原生展现GIF图片,而对于GIF的原生支持暂时也没有像JPG、PNG等图像格式支持得这么全面,因此本文从图片的合成与分解角度来大家讲解GIF的知识,结合...
  • Android各种动画效果

    千次阅读 2016-06-08 12:01:32
    现在开发的软件是越来越炫酷了,各种各样的动画都会出现,吸引用户的眼球。客户的需求才是我们做技术能力提升的条件,这就使我们对动画实现要更加的熟练包括一些自定义控件快速的运用和编写。最近,我也搜集了很多...
  • android打造独一无二的loading动画效果

    千次阅读 2016-08-18 11:50:24
    最近改代码改的都醉了,前几天写了个图片加载框架,点了闪退,找半天没找到问题...先来看看,今天我们loading的效果: 其实这个不是很难,我居然花了两天半++。因为今天电脑太卡了。后面就只用文字表达,不上图片了。
  • Android 图片弹跳动画

    千次阅读 2016-05-07 20:24:23
    这几天看到一个小动画,觉得有点意思,就自己实现来看看,先看效果图 http://img.my.csdn.net/uploads/201605/07/1462618630_6882.gif
  • iOS动画效果、绘制图形

    千次阅读 2015-10-30 17:28:03
    在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画、关键帧动画、动画组、转场...
  • 仿美团加载动画效果

    千次阅读 2015-11-20 23:06:15
    这两天在用美团的时候,平时中没有注意的一个小细节,今天注意到了,就是在进入新页面还没有加载数据的时候,我们都可以看到一个小人像是在跑步,于是我非常好奇这个东西是怎么做的呢?于是乎我就把它的apk下载下来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,869
精华内容 17,547
关键字:

如何设置图片动画效果为进入