PopupMenu菜單以及開發工作中像素的計算

MainActivity部分

package com.lt.popupmenu;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.PopupMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

//類似於上下文菜單  popupMenu
//基本使用步驟 :1. xml佈局 2.創建menu對象 3.展示菜單 4.處理菜單的單擊
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    //組件的單擊處理
    public void doClick(final View view) {
        //點擊所有組件彈出pop菜單
        //創建popmenu對象
        PopupMenu popupMenu = new PopupMenu(this,view);
        //給菜單綁定菜單文件xml
        popupMenu.getMenuInflater().inflate(R.menu.main_menu_pop,popupMenu.getMenu());
        //顯示menu
        popupMenu.show();
        //處理菜單選項的點擊
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                switch (menuItem.getItemId()){
                    case R.id.menu_main_width:
                        Toast.makeText(MainActivity.this,view.getWidth()+"像素"+px2dip(MainActivity.this,view.getWidth())+"dp",Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.menu_main_height:
                        Toast.makeText(MainActivity.this,view.getHeight()+"像素"+dip2px(MainActivity.this,view.getWidth())+"px",Toast.LENGTH_SHORT).show();
                        break;
                }

                return false;
            }
        });
    }
    //像素和dp 之間的轉換     在當前手機下 1dp=多少像素(像素密度)
    /**
     * 重點
     * 根據手機的分辨率從 dp 的單位 轉成爲 px(像素)
     * dp*密度+0.5 取整
     *
     */
    public static int dip2px(Context context,float dpValue){
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue*scale +0.5f);
    }
    /**
     * 根據手機的分辨率從 px(像素) 的單位 轉成爲 dp
     * 像素/密度+0.5取整
     *
     *
     */
    private static int px2dip(Context context,float pxValue){
        //像素的密度值
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue/scale +0.5f);
    }
}

activit_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.lt.popupmenu.MainActivity">

    <TextView
        android:id="@+id/textview_main_txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="點我點我看像素"
        android:textSize="30sp"
        android:clickable="true"
        android:onClick="doClick"/>
</LinearLayout>

menu的簡單xml文件省了

發佈了30 篇原創文章 · 獲贊 17 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章