Android(安卓)Listview切换动画,扩展到任意view切换之间动画实现
16lz
2021-01-24
添加布局如下:
<?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. */@Overridepublic 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 ListViewfinal ArrayAdapter<String> adapterEn = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, LIST_STRINGS_EN);// Prepare the ListViewfinal ArrayAdapter<String> adapterFr = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, LIST_STRINGS_FR);mEnglishList.setAdapter(adapterEn);mEnglishList.setOnItemClickListener(new OnItemClickListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void onAnimationEnd(Animator anim) {visibleList.setVisibility(View.GONE);invisToVis.start();invisibleList.setVisibility(View.VISIBLE);}});visToInvis.start();}}
更多相关文章
- Android几行代码解决键盘遮挡问题
- Android实现沉浸式状态栏
- android通过自定义toast实现悬浮通知效果的示例代码
- Fragment 在Android(安卓)SDK1.6上实现
- [转] Android(安卓)检测电源按钮是否被按下
- android resultCode 一直为0问题解决
- android studio开发教程 ListActivity的2种使用方法:系统默认布局
- Android(安卓)fill_parent和wrap_content分析
- Android(安卓)代码中动态为RadioGroup添加RadioButton