Android动画工具类AnimeHepler
发布时间:2020-05-24 20:06:18 所属栏目:Java 来源:互联网
导读:Android动画工具类AnimeHepler
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 import android.content.Context;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.drawable.AnimationDrawable;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LinearInterpolator;
import android.view.animation.Animation.AnimationListener;
import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.FrameLayout.LayoutParams;
public class AnimeHepler {
private static AnimeHepler util;
public static AnimeHepler getInstance() {
if (util == null) {
util = new AnimeHepler();
}
return util;
}
private AnimeHepler() {
super();
}
/**
*
* 给listView加一个刷新动画的EmptyView listview外层最好用FrameLayout单独包着
*
* @param context
* @param lv
* @param is
*/
public void setAnimationEmptyView(Context context,AbsListView lv,ProgressBar bar,String str) {
ViewGroup parentView = (ViewGroup) lv.getParent();
removeItem(parentView,lv,-10321);
removeItem(parentView,-10322);
LinearLayout wait = getProgressView(context,bar,str);
parentView.addView(wait);
lv.setTag(-10322,wait);
lv.setEmptyView(wait);
}
/**
* 给listView加一个数据为空时EmptyView listview外层最好用FrameLayout单独包着
*
* @param context
* @param lv
* @param rid
* @param message
* @param listener
*/
public void setNoDataEmptyView(Context context,Integer rid,String message,OnClickListener listener) {
ViewGroup parentView = (ViewGroup) lv.getParent();
removeItem(parentView,-10322);
LinearLayout inflate = getEmptyView(context,rid,message,listener);
parentView.addView(inflate);
lv.setEmptyView(inflate);
lv.setTag(-10321,inflate);
}
/**
* 删除上一个EmptyView
* @param parentView
* @param lv
* @param index
*/
private void removeItem(ViewGroup parentView,int index) {
Object tag = lv.getTag(index);
if (tag != null && tag instanceof View) {
View s = ( View) tag;
parentView.removeView(s);
lv.setTag(index,null);
}
}
/**
* 得到一个刷新动画的EmptyView
*
* @param context
* @param bar
* @param str
* @return
*/
private LinearLayout getProgressView(Context context,String str) {
LinearLayout ll1 = new LinearLayout(context);
ll1.setOrientation(LinearLayout.VERTICAL);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
ll1.setGravity(Gravity.CENTER);
ll1.setLayoutParams(params);
if (bar == null) {
bar = new ProgressBar(context);
}
TextView textView = new TextView(context);
textView.setText(str);
textView.setGravity(Gravity.CENTER);
ll1.addView(bar);
ll1.addView(textView);
return ll1;
}
/**
* 得到一个数据为空时的EmptyView
*
* @param context
* @param rid
* @param str
* @param click
* @return
*/
private LinearLayout getEmptyView(Context context,String str,OnClickListener click) {
LinearLayout ll2 = new LinearLayout(context);
ll2.setOrientation(LinearLayout.VERTICAL);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
ll2.setGravity(Gravity.CENTER);
ll2.setLayoutParams(params);
if (click != null) {
ll2.setOnClickListener(click);
}
if (rid != null) {
ImageView imageView = new ImageView(context);
imageView.setImageResource(rid);
ll2.addView(imageView);
}
TextView textView = new TextView(context);
textView.setText(str);
textView.setGravity(Gravity.CENTER);
ll2.addView(textView);
return ll2;
}
/**
* 给view设置动画效果,并设置动画结束后回调
*
* @param context
* @param v
* @param animationId
* @param ae
*/
public static void startAnimation(Context context,View v,int animationId,final OnAnimEnd ae) {
startAnimation(context,v,animationId,null,ae);
}
/**
* 给view设置动画效果,并设置动画结束后回调
*
* @param context
* @param v
* @param anim
* @param ae
*/
public static void startAnimation(Context context,Animation anim,anim,ae);
}
/**
* 给view设置动画效果,并设置动画结束后回调
*
* @param context
* @param v
* @param animationId
* @param ae
*/
private static void startAnimation(Context context,final OnAnimEnd ae) {
if (anim == null) {
anim = AnimationUtils.loadAnimation(context,animationId);
}
v.startAnimation(anim);
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation arg0) {
if (ae != null) {
ae.end();
}
}
});
}
public interface OnAnimEnd {
void end();
}
/**
* 将ImageView的图片变为灰色,0灰色,1彩色
*
* @param iv
* @param f
*/
public void setImageViewGray(ImageView iv,float f) {
try {
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(f);
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
iv.setColorFilter(filter);
} catch (Exception e) {
// TODO: handle exception
}
}
/**
* ImageView开始播放动画
*
* @param iv
*/
public void startImageAnimation(ImageView iv) {
iv.setVisibility(View.VISIBLE);
AnimationDrawable anim = (AnimationDrawable) iv.getDrawable();
anim.start();
}
/**
* 旋转动画,旋转后保留最后的状态
*
* @param rotate
* @return
*/
public android.view.animation.RotateAnimation getRotateAnimation(int rotate) {
android.view.animation.RotateAnimation animation = new android.view.animation.RotateAnimation(
0,rotate);
animation.setFillAfter(true);
animation.setInterpolator(new LinearInterpolator());
return animation;
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
