Android dialog 通过背景bitmap的像素宽度进行定位显示
来源:互联网 发布:烟台网亿网络好不好 编辑:程序博客网 时间:2024/06/05 11:52
主要是记录一下,显示的Dialog背景带有尖角,尖角位置的显示;
通过Bitmap的getWidth()方法获取位图的像素宽度;然后遍历查询,通过getPixel(int x, int y)方法,判断返回的color色值,是否为0,判断尖角的位置。
贴代码;
@SuppressLint("NewApi")public class BarHome extends AbsBarUtil {@BindView(id = R.id.ghlj, click = true)private ImageView mIv;private Dialog mDialog;private int mIvCenterX;private static int mArrowSelfLeftX;private int mBarHeight;private View mContent;private int mContentWidth;public BarHome() {super();mContent = LayoutInflater.from(mIv.getContext()).inflate(R.layout.item_pop_win_ghlj, null);mContent.findViewById(R.id.ll_ihu).setOnClickListener(this);mContent.findViewById(R.id.ll_qyy).setOnClickListener(this);mContent.findViewById(R.id.ll_aljk).setOnClickListener(this);mContent.findViewById(R.id.ll_wxgh).setOnClickListener(this);mContent.findViewById(R.id.ll_zfbgh).setOnClickListener(this);mContent.addOnLayoutChangeListener(new OnLayoutChangeListener() {@Overridepublic void onLayoutChange(View v, int left, int top, int right,int bottom, int oldLeft, int oldTop, int oldRight,int oldBottom) {mContentWidth = mContent.getMeasuredWidth();if (mArrowSelfLeftX == 0) {Drawable d = mContent.getBackground();Bitmap bmp = ImageUtil.drawable2Bitmap(d);int bmpW = bmp.getWidth();int oarrowx = getX(bmp);int delta = bmpW - oarrowx;mArrowSelfLeftX = mContentWidth - delta;mDialog.getWindow().getAttributes().x = mIvCenterX- mArrowSelfLeftX;if (mDialog.isShowing()) {mDialog.dismiss();}mDialog.show();}}});mIv.addOnLayoutChangeListener(new OnLayoutChangeListener() {@Overridepublic void onLayoutChange(View v, int left, int top, int right,int bottom, int oldLeft, int oldTop, int oldRight,int oldBottom) {int width = mIv.getMeasuredWidth() / 2;mIvCenterX = mIv.getLeft() + width;mBarHeight = getBarView().getMeasuredHeight();if (mDialog == null) {mDialog = DialogAssistant.getCustomDialog(mContent,mIvCenterX - mArrowSelfLeftX, mBarHeight);// mDialog.show();}}});}private String getUrl(Site site) {String url = null;if (site != null) {url = site.getUrl();}return url;}@Overrideprotected int getLayoutId() {return R.layout.actionbar_homepage1;}@Overridepublic void onClick(View v) {super.onClick(v);if (mDialog.isShowing()) {mDialog.dismiss();} else {if (R.id.ghlj == v.getId()) {mDialog.show();}}Site site = null;switch (v.getId()) {case R.id.ll_ihu:site = SiteUtil.getInstance().getIcallAndroid();SystemUtil.startApp("com.sinldo.aihu","com.sinldo.aihu.ui.LauncherUI", getUrl(site));break;case R.id.ll_qyy:site = SiteUtil.getInstance().getBoringHospitalAndroid();SystemUtil.startApp("com.kingyee.kymh", "com.kingyee.kymh.KYMH",getUrl(site));break;case R.id.ll_aljk:site = SiteUtil.getInstance().getAliHealthAndroid();SystemUtil.startApp("com.citic21.user","com.taobao.alijk.activity.GuideActivity", getUrl(site));break;case R.id.ll_wxgh:site = SiteUtil.getInstance().getWeChatAndroid();SystemUtil.startApp("com.tencent.mm","com.tencent.mm.ui.LauncherUI", getUrl(site));break;case R.id.ll_zfbgh:site = SiteUtil.getInstance().getAliPayAndroid();SystemUtil.startApp("com.eg.android.AlipayGphone","com.eg.android.AlipayGphone.AlipayLogin", getUrl(site));break;default:break;}}private int getX(Bitmap bmp) {int pos = 0;int len = bmp.getWidth();for (int i = 0; i < len; i++) {int color = bmp.getPixel(i, 1);if (color != 0) {pos = i;break;}}return pos;}}
0 0
- Android dialog 通过背景bitmap的像素宽度进行定位显示
- Android中使Dialog显示时背景不变暗 .dialog定位显示
- 设置Dialog的显示宽度
- 实现背景透明,宽度可控的Dialog
- **ANDROID**# 第七章图形与图像处理(静态处理) > Bitmap是有像素点构成的点阵图。 ------ ## 使用简单的图片 ---- * 通过Drawable对象进行访问。
- Android Dialog设置宽度显示不正常的问题(自定义设置Dialog的宽高)
- android AlertDialog Dialog显示位置、大小,背景
- Android 自定义dialog,去除系统默认黑色背景,边框并设置dialog的显示位置
- Android 通过GPS进行定位
- Android 通过基站进行定位
- Dialog显示宽度铺满屏幕宽度的设置
- Android背景透明的 Dialog
- Android背景透明的 Dialog
- Android背景透明的 Dialog
- Android背景透明的 Dialog
- Android背景透明的 Dialog
- Android 透明背景的dialog
- android中 bitmap 获取像素的RGB
- Windows内核驱动中操作文件
- NSRunLoop的使用
- poj 2451
- LA 11107 Life Forms
- 3D建模与处理软件简介
- Android dialog 通过背景bitmap的像素宽度进行定位显示
- 关于真机测试时INSTALL_FAILED_USER_RESTRICTED安装错误的问题
- android 网络加载图片并保存本地,压缩,jpeg png格式分析
- 数据结构学习笔记(九)跳表、字典的跳表描述
- shell脚本
- VB.Net语言 复制、删除文件
- Bit Manipulation - C语言中二进制操作
- C,C++ 宏中#与##的讲解
- extern用法 C和C++混编