最近在做一个小东西,需要用到背景定期轮换,上网找了一些,有几种方法,我也不知道哪个好,今天做的是其中一种。关键网上的很多人写东西对我这种小白不太友好,因为我啥也不会,所以今天把我实现的过程贴出来,一方面是方便复习,一方面是给像我一样的小白一个实现的简单方法,基本复制粘贴改名就行了。
先建立一个空的项目,就是这个,使用默认项目名,这样代码干扰少:
一、所要改的文件及位置:
1.layout下面新建4个布局文件。item_view1.xml、item_view2.xml、item_view3.xmlitem_view1.xml.做完这样:
2.布局layout/activity_main.xml 位置:
3.在res下新建:anim文件夹,再新建两个文件 :right_in.xml、right_out.xml.完成后这样。
4.mainactivity.java(这个文件名可能不同,一般是在java文件夹下项目名文件夹那个主文件。
二、 相关增加或修改文件内容:
1、布局文件:
item_view1.xml,其他文件可以此文件复制直接粘贴,改文件名,然后改颜色就行,我就直接贴出来了,这四个文件就名件名不同,颜色不同,其他都一样。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@android:color/holo_red_light"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
item_view2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#2196F3"
android:orientation="vertical">
</LinearLayout>
item_view3.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#009688"
android:orientation="vertical">
</LinearLayout>
item_view4.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFEB3B"
android:orientation="vertical">
</LinearLayout>
activity_main.xml文件增加:
<ViewFlipper
android:id="@+id/vflp_help"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inAnimation="@anim/right_in"
android:outAnimation="@anim/right_out"
android:flipInterval="3000">
<include layout="@layout/item_view1" />
<include layout="@layout/item_view2" />
<include layout="@layout/item_view3" />
<include layout="@layout/item_view4" />
</ViewFlipper>
完全代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ViewFlipper
android:id="@+id/vflp_help"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inAnimation="@anim/right_in"
android:outAnimation="@anim/right_out"
android:flipInterval="3000">
<include layout="@layout/item_view1" />
<include layout="@layout/item_view2" />
<include layout="@layout/item_view3" />
<include layout="@layout/item_view4" />
</ViewFlipper>
</androidx.constraintlayout.widget.ConstraintLayout>
2、动画文件:right_in.xml、right_out.xml.
right_in.xml
<?xml version ="1.0" encoding ="utf-8"?><!-- Learn More about how to use App Actions: https://developer.android.com/guide/actions/index.html -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="2000"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
right_out.xml.
<?xml version ="1.0" encoding ="utf-8"?><!-- Learn More about how to use App Actions: https://developer.android.com/guide/actions/index.html -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="2000"
android:fromXDelta="0"
android:toXDelta="-100%p" />
</set>
上面是右进的动画,如果左进,代码如下:
left_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="-100%p"
android:toXDelta="0"/>
</set>
left_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="-100%p"/>
</set>
然后修改布局文件中下面两行就行了:
-
android:inAnimation="@anim/left_in"
-
android:outAnimation="@anim/right_out"
-
效果有点不同。有些地方要修改才能完美。没细研究。
3、.mainactivity.java增加就三行,位置不同。
private ViewFlipper vflp_help; vflp_help = (ViewFlipper) findViewById(R.id.vflp_help); vflp_help.startFlipping();
完全代码:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ViewFlipper;
public class MainActivity extends AppCompatActivity {
private ViewFlipper vflp_help;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vflp_help = (ViewFlipper) findViewById(R.id.vflp_help);
vflp_help.startFlipping();
}
}
我不会做动图就不放了。
感谢:https://blog.csdn.net/w690333243/article/details/73559268