xml:一个按钮和一个图片
<Button android:onClick="set" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="动画" /> <ImageView android:id="@+id/imageview" android:layout_width="50dp" android:layout_height="50dp" android:src="@mipmap/aaa" />
java代码
package example.com.a2018124; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { private ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 image = (ImageView) findViewById(R.id.imageview); } public void set(View view) { //动画集合 AnimationSet AnimationSet set = new AnimationSet(true); //TranslateAnimation 移动(X初始位置,X移动后的位置,Y初始化位置,Y移动后的位置) TranslateAnimation ta = new TranslateAnimation(0, 2000, 0, 200); //设置动画时间 ta.setDuration(5000); //设置动画次数:无限循环 Integer.MAX_VALUE(最大次数) ta.setRepeatCount(Integer.MAX_VALUE); //ScaleAnimation 缩放 (X初始化大小,X缩放后的大小,Y初始化大小,Y缩放后的大小) ScaleAnimation sa = new ScaleAnimation(0.5f, 0.5f, 0.5f, 0.5f); sa.setDuration(2000); //RotateAnimation 旋转 (开始旋转角度,旋转角度,参照物中心) RotateAnimation ra = new RotateAnimation(0, 50, 80, 80); ra.setDuration(2000); //AlphaAnimation 透明度 0不显示 1显示 AlphaAnimation aa = new AlphaAnimation(0, 1); aa.setDuration(2000); set.addAnimation(aa); set.addAnimation(ta); set.addAnimation(sa); set.addAnimation(ra); //控件绑定动画 image.startAnimation(set); } }
ViewPager控件:滑动页面,轮播
不会造成过多的内存,只会留上一个的和当前的和下一个的视图
1.初始化
2.数据源 里面嵌套View
3.适配器 PagerAdapter
xml代码
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_view_pager_fragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="example.com.a2018124.ViewPagerFragmentActivity"> <android.support.v4.view.ViewPager android:id="@+id/mviewpager" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v4.view.ViewPager> </RelativeLayout>java代码
package example.com.a2018124; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import java.util.ArrayList; import java.util.List; public class ViewActivity extends AppCompatActivity { private ViewPager mviewpager; private List<ImageView> mviews = new ArrayList<>(); private Integer[] mImages = {R.mipmap.a1, R.mipmap.a2, R.mipmap.a3, R.mipmap.a4, R.mipmap.aaa}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view); mviewpager = (ViewPager) findViewById(R.id.mviewpager); //数据源 List<? extends View>(里面只能嵌套View) for (int i = 0; i < 5; i++) { ImageView imageview = new ImageView(ViewActivity.this); //居中裁剪 imageview.setScaleType(ImageView.ScaleType.CENTER_CROP); imageview.setImageResource(mImages[i]); mviews.add(imageview); } mviewpager.setAdapter(new MyAdapter()); } class MyAdapter extends PagerAdapter { /** * 数量 * * @return */ @Override public int getCount() { return mviews.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } //初始化的 @Override public Object instantiateItem(ViewGroup container, int position) { //添加视图 container.addView(mviews.get(position)); //返回当前视图 return mviews.get(position); } //销毁的 @Override public void destroyItem(ViewGroup container, int position, Object object) { //移除数据 container.removeView(mviews.get(position)); } } }
效果图如下