zoukankan      html  css  js  c++  java
  • Android Listview切换动画,扩展到任意view切换之间动画实现

    添加布局如下:

    <?xml version="1.0" encoding="utf-8"?>
    <!-- Copyright (C) 2010 The Android Open Source Project
    
         Licensed under the Apache License, Version 2.0 (the "License");
         you may not use this file except in compliance with the License.
         You may obtain a copy of the License at
    
              http://www.apache.org/licenses/LICENSE-2.0
    
         Unless required by applicable law or agreed to in writing, software
         distributed under the License is distributed on an "AS IS" BASIS,
         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         See the License for the specific language governing permissions and
         limitations under the License.
    -->
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button
            android:id="@+id/button"
            android:text="切换按钮"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <ListView
            android:id="@+id/list_en"
            android:layout_width="match_parent"
            android:layout_weight="1.0"
            android:layout_height="0dip"/>
        <ListView
            android:id="@+id/list_fr"
            android:layout_width="match_parent"
            android:layout_weight="1.0"
            android:layout_height="0dip"
            android:visibility="gone"/>
    </LinearLayout>
    

      

    切换动画实现:

    package com.edaixi.tempbak;
    
    import android.animation.Animator;
    import android.animation.AnimatorListenerAdapter;
    import android.animation.ObjectAnimator;
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.animation.AccelerateInterpolator;
    import android.view.animation.DecelerateInterpolator;
    import android.view.animation.Interpolator;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.SeekBar;
    import android.widget.Toast;
    
    @SuppressLint("NewApi")
    public class SwitchListviewAnimation extends Activity {
    
    	private static final int DURATION = 1500;
    	private SeekBar mSeekBar;
    
    	private static final String[] LIST_STRINGS_EN = new String[] { "e 袋洗 - 1",
    			"e 袋洗 - 2", "e 袋洗 - 3", "e 袋洗 - 4", "e 袋洗 - 5", "e 袋洗 - 6" };
    	private static final String[] LIST_STRINGS_FR = new String[] { "阿姨帮 - 1",
    			"阿姨帮 - 2", "阿姨帮 - 3", "阿姨帮 - 4", "阿姨帮 - 5", "阿姨帮 - 6" };
    
    	ListView mEnglishList;
    	ListView mFrenchList;
    
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_switch);
    		mEnglishList = (ListView) findViewById(R.id.list_en);
    		mFrenchList = (ListView) findViewById(R.id.list_fr);
    
    		// Prepare the ListView
    		final ArrayAdapter<String> adapterEn = new ArrayAdapter<String>(this,
    				android.R.layout.simple_list_item_1, LIST_STRINGS_EN);
    		// Prepare the ListView
    		final ArrayAdapter<String> adapterFr = new ArrayAdapter<String>(this,
    				android.R.layout.simple_list_item_1, LIST_STRINGS_FR);
    
    		mEnglishList.setAdapter(adapterEn);
    		mEnglishList.setOnItemClickListener(new OnItemClickListener() {
    
    			@Override
    			public void onItemClick(AdapterView<?> parent, View view,
    					int position, long id) {
    				Toast.makeText(getApplicationContext(),
    						"---点击---" + LIST_STRINGS_EN[position], 0).show();
    			}
    		});
    		mFrenchList.setAdapter(adapterFr);
    		mFrenchList.setOnItemClickListener(new OnItemClickListener() {
    
    			@Override
    			public void onItemClick(AdapterView<?> parent, View view,
    					int position, long id) {
    				Toast.makeText(getApplicationContext(),
    						"---点击---" + LIST_STRINGS_FR[position], 0).show();
    			}
    		});
    		mFrenchList.setRotationY(-90f);
    
    		Button starter = (Button) findViewById(R.id.button);
    		starter.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				flipit();
    			}
    		});
    	}
    
    	private Interpolator accelerator = new AccelerateInterpolator();
    	private Interpolator decelerator = new DecelerateInterpolator();
    
    	private void flipit() {
    		final ListView visibleList;
    		final ListView invisibleList;
    		if (mEnglishList.getVisibility() == View.GONE) {
    			visibleList = mFrenchList;
    			invisibleList = mEnglishList;
    		} else {
    			invisibleList = mFrenchList;
    			visibleList = mEnglishList;
    		}
    		ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visibleList,
    				"rotationY", 0f, 90f);
    		visToInvis.setDuration(500);
    		visToInvis.setInterpolator(accelerator);
    		final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisibleList,
    				"rotationY", -90f, 0f);
    		invisToVis.setDuration(500);
    		invisToVis.setInterpolator(decelerator);
    		visToInvis.addListener(new AnimatorListenerAdapter() {
    			@Override
    			public void onAnimationEnd(Animator anim) {
    				visibleList.setVisibility(View.GONE);
    				invisToVis.start();
    				invisibleList.setVisibility(View.VISIBLE);
    			}
    		});
    		visToInvis.start();
    	}
    
    }
    

      

  • 相关阅读:
    20172318 2017-2018-2 《程序设计与数据结构》第5周学习总结
    20172318 2017-2018-2 《程序设计与数据结构》第4周学习总结
    20172318 2017-2018-2 《程序设计与数据结构》实验1报告
    20172318 《程序设计与数据结构》第三周学习总结
    20172318 2017-2018-2 《程序设计与数据结构》第2周学习总结
    20172318 2016-2017-2 《Java程序设计》第一周学习总结
    寒假作业03
    寒假作业02
    20172311 2017-2018-2 《程序设计与数据结构》第五周学习总结
    20172311 《程序设计与数据结构》第四周学习总结
  • 原文地址:https://www.cnblogs.com/spring87/p/4497469.html
Copyright © 2011-2022 走看看