我正在尝试为Android Studio中的LinearLayout加载我自己的动画之一(例如gif)作为背景。我知道,如果它是正常图像,我可以将其放在可绘制文件夹中,然后执行以下操作:
Select distinct
c.id_penjualan,
d.nama_transaksi_pengeluaran, e.nama_pelanggan,
f.no_kombinasi, g.nama_produk, c.harga, c.jumlah,
c.subtotal, c.no_voucher, c.no_polisi
from
t.penjualan_h a
inner join
spbu142071163.t.penjualan_d b on a.no_penjualan = b.no_penjualan
inner join
spbu142071163.t.penjualan_d2 c on b.no_penjualan = c.no_penjualan
inner join
spbu142071163.m.tipe_transaksi_pengeluaran d on b.kode_tipe_transaksi_pengeluaran = d.kode_tipe_transaksi_pengeluaran
inner join
m.pelanggan e on b.kode_pelanggan = e.kode_pelanggan
inner join
m.kombinasi f on c.no_kombinasi = f.no_kombinasi
inner join
m.produk g on f.kode_produk = g.kode_produk
where
a.no_penjualan = 'PNJLN190717.001'
and a.no_penjualan = c.no_penjualan
and c.kode_pelanggan = e.kode_pelanggan
但是对于gif这样的动画,我该怎么做呢?
LinearLayout只是普通的LinearLayout。
android:background="@drawable/image"
答案 0 :(得分:2)
我使用以下方法在应用程序中制作动画。可以有许多其他方式。我已经做到了...
在xml中执行此操作。
<RelativeLayout
android:id="@+id/gradient_rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/profile_gradient4">
<!-- place your child views here-->
<Relativelayout/>
在drawable中进行xml布局。
profile_gradient4.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/profile_gradient1"
android:duration="7500"/>
<item
android:drawable="@drawable/profile_gradient2"
android:duration="7500"/>
<item
android:drawable="@drawable/profile_gradient3"
android:duration="7500"/>
</animation-list>
您可以从此处-> My app which runs a smooth animation in background获取profile_gradient1、2、3的代码。 这些xml存在于drawable文件夹中。您甚至可以使用普通图像代替这3个xml布局。
在活动范围内的Java代码中:
private void runGradient() {
//method is used to give gradient color animation to the bottom of profile screen
RelativeLayout relativeLayout = findViewById(R.id.gradient_rl);
AnimationDrawable animationDrawable = (AnimationDrawable) relativeLayout.getBackground();
animationDrawable.setEnterFadeDuration(5000);
animationDrawable.setExitFadeDuration(7500);
animationDrawable.start();
}
我在上面做什么?
我所做的相对布局将具有我的子视图的背景。
在profile_gradient4.xml中,我制作了一个动画列表,其中包含3个其他可绘制对象。它们是profile_gradient1、2和3。
然后在活动中,我使用AnimatonDrawable获取了动画列表,提供了淡入淡出动画的时间并开始了profile_gradient1、2和3的动画。
您可以通过上面的GitHub链接使用和运行我的应用。
编辑:其他建议方法->
如果您希望将gif动画作为背景,这篇文章可能会对您有所帮助-> adding-gif-image-in-an-imageview-in-android。
您还可以使用诸如glide之类的某些库来显示gif。使该gif视图跨越其父视图的大小,然后在该gif视图上方绘制其他子视图。
答案 1 :(得分:0)
在文件夹可绘制中创建背景框架和动画列表。
示例(动画列表)background_animation
:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/background_animation_0"
android:duration="250"/>
<item
android:drawable="@drawable/background_animation_1"
android:duration="250"/>
<item
android:drawable="@drawable/background_animation_2"
android:duration="250"/>
<item
android:drawable="@drawable/background_animation_3"
android:duration="250"/>
</animation-list>
示例(框架)background_animation_0
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="@color/colorAnimationBlue"
android:centerColor="@color/colorAnimationBlue"
android:endColor="@color/colorAnimationPink"
android:angle="270"/>
</shape>
将此添加到您的布局:
android:background="@drawable/background_animation"
将此添加到您的活动中:
LinearLayout layout = findViewById(R.id.Layout);
BackgroundAnimation backgroundAnimation = (AnimationDrawable) layout.getBackground();
backgroundAnimation.setEnterFadeDuration(3700);
backgroundAnimation.setExitFadeDuration(3700);
backgroundAnimation.start();