Android 省略号加载动画效果的实现思路
2017-10-18 16:18
597 查看
public class PointWaitBar extends LinearLayout { private static final int NUM = 5; private Context context; private String TAG = "PointWaitBar"; private ImageView mOldIM; private UpdateHandler handler; public PointWaitBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context = context; init(); } public PointWaitBar(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; init(); } public PointWaitBar(Context context) { super(context); this.context = context; init(); } private void init() { //初始化数据 this.setOrientation(LinearLayout.HORIZONTAL); this.setGravity(Gravity.CENTER); handler = new UpdateHandler(context); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.point_waitingbar_black); LinearLayout.LayoutParams tLayoutParams = new LinearLayout.LayoutParams(bitmap.getWidth(), bitmap.getHeight()); tLayoutParams.leftMargin = 10; tLayoutParams.rightMargin = 10; //添加5个小点省略号 for (int i = 0; i < NUM; i++) { ImageView vDot = new ImageView(context); vDot.setLayoutParams(tLayoutParams); if (i == 0) { vDot.setBackgroundResource(R.drawable.point_waitingbar_white); } else { vDot.setBackgroundResource(R.drawable.point_waitingbar_black); } this.addView(vDot); } mOldIM = (ImageView) this.getChildAt(0); handler.sendEmptyMessage(0); } //提供给外部消除message public void setDestroyCallBack() { if (handler != null) { handler.removeCallbacksAndMessages(null); LogUtil.i(TAG, "已经清除消息"); } } class UpdateHandler extends Handler { WeakReference<Context> reference; public UpdateHandler(Context context) { reference = new WeakReference<Context>(context); } @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); int cPosition = msg.what; if (mOldIM != null) mOldIM.setBackgroundResource(R.drawable.point_waitingbar_black); ImageView currentIM = (ImageView) PointWaitBar.this.getChildAt(cPosition); currentIM.setBackgroundResource(R.drawable.point_waitingbar_white); mOldIM = currentIM; if (++cPosition == NUM) cPosition = 0; this.sendEmptyMessageDelayed(cPosition, 200); } } }
相关文章推荐
- Android实现跳动的小球加载动画效果
- Android实现跳动的小球加载动画效果
- Android 使用 Path 实现搜索动态加载动画效果
- android 使用Path实现搜索动态加载动画效果
- Android自定义view实现阻尼效果的加载动画
- Android自定义View实现loading动画加载效果
- 三种实现android加载进度条的动画效果
- android 简单实现GridView的Item逐个加载和动画效果
- Android——ViewPager实现3D画廊效果(ViewPager的加载动画)
- Android animation-list 实现加载动画效果
- android之animation-list+图片实现的粘稠的加载动画效果
- 分享Android实现加载Gif动画的类库
- Android动画效果Animation之Tween实现简单动画
- 10个CSS和jQuery的加载中(loading)动画效果实现
- Android动画Animation之Tween用代码实现动画效果
- Android插值器、动画、分解详解,实现View摆动效果 推荐
- Android动画Animation之Frame实现类似电影的动画效果
- Android利用ViewFlipper实现屏幕切换动画效果
- Android逐条加载ListView,实现动画更新
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用