65Popupwindow的美化&&屏幕适配&&像素转dp的工具类的写法

来源:互联网 发布:linux下vim环境配置 编辑:程序博客网 时间:2024/06/07 09:57

使用资源图片指定的布局来美化弹出窗体:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="horizontal"    android:background="@drawable/local_popup_bg"     >         <LinearLayout         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        >        <ImageView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/img1"            />        <TextView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="卸载"            />            </LinearLayout>     <LinearLayout         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        >        <ImageView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/img2"            />        <TextView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="启动"            />            </LinearLayout>     <LinearLayout         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        >        <ImageView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/img3"            />        <TextView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="分享"            />            </LinearLayout>    </LinearLayout>
代码中加载view:

View contentView = View.inflate(getApplicationContext(), R.layout.popup_app_item, null);

运行:


现在这个弹出窗体距离左边太近了,得让他距离左边的距离远一点,在代码中指定的大小单位均为像素,我们需要使用dip,这样才能适配各种各样的屏幕

package com.ustc.mobilemanager.utils;import android.content.Context;public class DensityUtil {  /**      * 根据手机的分辨率从 dip 的单位 转成为 px(像素)      */      public static int dip2px(Context context, float dpValue) {          final float scale = context.getResources().getDisplayMetrics().density;          return (int) (dpValue * scale + 0.5f);      }        /**      * 根据手机的分辨率从 px(像素) 的单位 转成为 dp      */      public static int px2dip(Context context, float pxValue) {          final float scale = context.getResources().getDisplayMetrics().density;          return (int) (pxValue / scale + 0.5f);      } }


调用:

int dip = 60;int px = DensityUtil.dip2px(getApplicationContext(), dip);popupWindow.showAtLocation(parent, Gravity.LEFT | Gravity.TOP, px, location[1]);







0 0
原创粉丝点击