5.0转场动画入门

本文介绍了如何在Android应用中实现Zoom-Up转场动画,通过MainActivity、MyAdapter和DetailActivity的代码示例,展示了点击图片时的动画效果。关键点在于设置imageView的android:transitionName属性。
摘要由CSDN通过智能技术生成

参考http://extremej.itscoder.com/zoom-up-animation/

效果图

这里写图片描述

代码

MainActivity.java

public class MainActivity extends AppCompatActivity {


    ListView listView;
    MyAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView= (ListView) findViewById(R.id.listview);
        adapter=new MyAdapter(MainActivity.this);
        listView.setAdapter(adapter);

    }
}

MyAdapter.java
注意:点击图片会有转场动画出现,仔细看onClick的写法


public class MyAdapter extends BaseAdapter {

    private Context context;
    List list=new ArrayList();

    MyAdapter(Context context) {
        this.context = context;
        list.add(R.drawable.anim1);
        list.add(R.drawable.anim2);
        list.add(R.drawable.anim3);
//        list.add(R.drawable.anim4);
//        list.add(R.drawable.anim5);
//        list.add(R.drawable.anim6);

    }
    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;
        if (convertView == null) {
            convertView =  LayoutInflater.from(context).inflate(R.layout.item, parent, false);
            holder = new ViewHolder();
            holder.imageView = (ImageView) convertView.findViewById(R.id.img_avatar);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.imageView.setImageResource((int)list.get(position));
        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onClick(View v) {
                //动画在这里
                ActivityOptions options =
                        ActivityOptions.makeSceneTransitionAnimation((Activity) context, v, context.getString(R.string.image_transition_name));
                Intent intent=new Intent(context,DtailActivity.class);
                intent.putExtra(DtailActivity.EXTRA_IMAGE,(int)getItem(position) );
                context.startActivity(intent,options.toBundle());
            }
        });
        return convertView;
    }

    private class ViewHolder {
        ImageView imageView;
    }
}

DtailActivity.java


public class DtailActivity extends AppCompatActivity {

    public static final java.lang.String EXTRA_IMAGE = DtailActivity.class.getSimpleName() + ".IMAGE";
    ImageView imgAvatar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dtail);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        imgAvatar= (ImageView) findViewById(R.id.img_avatar);
        imgAvatar.setImageResource(getIntent().getExtras().getInt(EXTRA_IMAGE));

    }

}

第二个页面布局文件
关键:注意imageView的 android:transitionName=”@string/image_transition_name”

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.qunar.yuzhiyun.animationtransition.DtailActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/img_avatar"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:fitsSystemWindows="true"
                android:scaleType="fitXY"
                android:transitionName="@string/image_transition_name"
                app:layout_collapseMode="parallax"
                android:src="@drawable/anim2"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"/>

        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>


    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.v7.widget.CardView
            android:id="@+id/cardview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/activity_horizontal_margin">

            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="@dimen/activity_horizontal_margin"
                android:text="@string/detailText"
                android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>
        </android.support.v7.widget.CardView>
    </android.support.v4.widget.NestedScrollView>
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值