Android 方便快捷简单自定义提示气泡
来源:互联网 发布:淘宝字体图标 编辑:程序博客网 时间:2024/04/28 16:19
写在前面的话
有大半年没有更新过博客了,期间发生了不少的事情,当然对于我技术成长轨迹最重要的还是人生的第一次跳槽,从以前的木蚂蚁到现在的一直播。两家都是超级完美的公司,过的都很开心。始终感恩前行,对于技术始终像是一个傻瓜一样努力。虽然平庸,但是从未放弃。
正经的总结下
嗯,从以前的单打独斗到现在有个不错的团队,见识总是有些的。对以前做过的一些项目有过更新的认知。最近一直在折腾android的硬编码,相对于以前来说也算是有那么一点技术含量吧(录屏功能,过些日子总结下,会在博客中记录下)。嗯,不过时不时的还是喜欢做些UI上的小东西,多充实下自己。
为什么要写这个控件?
最近直播上了一新功能,产品要求我弹一个气泡提示。其实这个很简单,一拍脑子就想用popWindow。确实可以实现这个功能,但。。。。我为什么不能自己做一个类似于这样的呐?闲来无事,随手写一个。。。(有时候想想,技术能力强和差又有什么分别?同样一个功能,你能做,他也能做。但为什么又会分出个高低?细节,那些技术大牛会更注重细节。多些思考)
梳理下要求
1、根据目标控件,弹出相应位置的气泡弹框。额好像就是这一个要求咯~啊哈哈哈
实现过程
1、初始化控件,其中包括了一个TextView和一个小三角的ImageView,因为想做的事在代码中直接new 出这个东西来,所以构造函数直接上直接对相应的参数赋值。然后分别对这两个View 设置相应的东西
public BubbleDialog(Context context, int direction, float targetX, float targetY, float targetWidth, float targetHeight, String text) { super(context); this.direction = direction; this.targetX = targetX; this.targetY = targetY; this.targetWidth = targetWidth; this.targetHeight = targetHeight; this.text = text; initView(context); } /** * 初始化控件 * * @param context */ public void initView(Context context) { //文字设置 tv_center_text = new TextView(context); tv_center_text.setId(R.id.tv_center_text); tv_center_text.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL); tv_center_text.setBackground(getResources().getDrawable(R.drawable.shape_long_press_pic_hite)); //tv_center_text.setPadding(UIUtil.dip2px(context,10),UIUtil.dip2px(context,10),UIUtil.dip2px(context,10),UIUtil.dip2px(context,10)); //图片设置 iv_triangle = new ImageView(context); iv_triangle.setId(R.id.iv_triangle); tv_center_text.setText(text); iv_triangle.setImageDrawable(getResources().getDrawable(R.drawable.pic_hite_triangle)); setDirection(context); }
2、设置布局位置(根据小三角的方向)
if (direction == 0) { tv_params = new LayoutParams(UIUtil.dip2px(context, 120), UIUtil.dip2px(context, 30)); iv_params = new LayoutParams(UIUtil.dip2px(context, 10), UIUtil.dip2px(context, 5)); iv_params.addRule(RelativeLayout.BELOW, R.id.tv_center_text); iv_params.addRule(RelativeLayout.CENTER_HORIZONTAL); tv_params.addRule(RelativeLayout.CENTER_HORIZONTAL); }
3、设置在父布局的位置
ivate void setPosition(Context context) { if (direction == 0) { this.setX(targetX - UIUtil.dip2px(context, 120) / 2 + targetWidth / 2); this.setY(targetY - UIUtil.dip2px(context, 30)); }
4、动画
this.setVisibility(View.VISIBLE); int height = -UIUtil.dip2px(getContext(), 15); animSet = new AnimatorSet(); if (direction == 0) { ObjectAnimator moveUP = ObjectAnimator.ofFloat(this, "translationY", this.getY(), this.getY() + height); moveUP.setDuration(600); ObjectAnimator moveDown = ObjectAnimator.ofFloat(this, "translationY", this.getY() + height, this.getY()); moveDown.setDuration(600); animSet.play(moveDown).after(moveUP); } animSet.start(); animSet.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { if (animetime > 5) { setVisibility(GONE); } else { animetime++; animation.start(); } }}
当然最后国际惯例上GitHub地址 https://github.com/duanyikang/BubbleDialog
0 0
- Android 方便快捷简单自定义提示气泡
- 自定义气泡提示小插件
- 气泡提示
- Android 环信 自定义聊天气泡
- Android自定义view案例一气泡框
- 非常简单的气泡提示js(jquery)
- JQuery实现简单实用的气泡提示插件
- Android中点中overlay气泡对话提示框效果
- Android 仿QQ 5.0 气泡提示 拖动爆炸消除
- Android实现图标右上角红色小圆球提示气泡
- 隐藏Android第一次开机向导(提示气泡)
- 删除Android刷机启动开机向导(气泡提示)
- android 简单的实现视频的播放 基于 ijkplayer的封装更加简单 方便快捷
- android 简单的实现视频的播放 基于 ijkplayer的封装更加简单 方便快捷
- 气泡提示窗口
- VC++ 使用气泡提示
- 气球/气泡提示
- 气泡式提示
- Android开发之线程池使用总结
- 刚开始学习android的我的笔记-1
- [noip模拟]四道题 noip2008 笨小猴 noip2008 火柴棒等式 noip2008 双栈排序 noip2008 传纸条
- ROS----TUT-RIM协作机器人和Actin-ROS接口
- Linux中关于函数__stringify(x)
- Android 方便快捷简单自定义提示气泡
- 解决移动端滚动页面释放时所触发的tounchend事件
- Node——构建Web应用
- shell脚本学习一
- 【Unity&2D&Sprite&描边&特效&Shader】2D2.5D像素图片描边特效实现
- QiYuAdmin-架构搭建一(SpringBoot实战)
- CSS
- 浅析C++多线程编程理论与实践
- 精美后台系统模板