package com.cheng.animationstudy.activity; import android.graphics.drawable.AnimationDrawable; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; import com.cheng.animationstudy.R; public class FrameAnimActivity extends AppCompatActivity { private ImageView mShowFrameAnimIV; private CheckBox mLoadAnimByXmlCB; private AnimationDrawable mFrameAnimDrawable; private int [] mFramwAnimDrawableResIDs = new int[]{ R.mipmap.sdd_frameanim_0, R.mipmap.sdd_frameanim_1, R.mipmap.sdd_frameanim_2, R.mipmap.sdd_frameanim_3, R.mipmap.sdd_frameanim_4, R.mipmap.sdd_frameanim_5}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_frameanim); initView(); initListener(); } private void initView() { this.mShowFrameAnimIV = (ImageView) this.findViewById(R.id.iv_showframeanim); this.mLoadAnimByXmlCB = (CheckBox) this.findViewById(R.id.cb_loadanimbyxml); initFrameAnimDrawable(false); } private void initListener() { this.mLoadAnimByXmlCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { initFrameAnimDrawable(isChecked); } }); } private void initFrameAnimDrawable(boolean isLoadFromXml) { if (isLoadFromXml) { this.mFrameAnimDrawable = (AnimationDrawable) ContextCompat.getDrawable(getBaseContext(), R.drawable.sdd_frameanim); } else { this.mFrameAnimDrawable = new AnimationDrawable(); for (int i=0; i< mFramwAnimDrawableResIDs.length; i++) { this.mFrameAnimDrawable.addFrame(ContextCompat.getDrawable(getBaseContext(), mFramwAnimDrawableResIDs[i]), 100); } } this.mFrameAnimDrawable.setOneShot(false); this.mShowFrameAnimIV.setBackground(mFrameAnimDrawable); } public void startAnim(View v) { if (mFrameAnimDrawable!=null && !mFrameAnimDrawable.isRunning()) { mFrameAnimDrawable.start(); } } public void stopAnim(View v) { if (mFrameAnimDrawable!=null && mFrameAnimDrawable.isRunning()) { mFrameAnimDrawable.stop(); } } }