您现在的位置是:主页 > news > 成都网站优化seo/口碑营销5t理论

成都网站优化seo/口碑营销5t理论

admin2025/6/3 21:18:12news

简介成都网站优化seo,口碑营销5t理论,前端开发模板,建行业网站的必要性因为一个效果中的图片设置了wrap_content的属性,但在720dp跟540dp上面显示不一致使老大非常恼火。跟他讲也讲不明白。于是乎让我们彼此测试来探个究竟。首先测试的是个图片: 它的物理像素是256*256的。 首先是个简单的测试布局,一个textview显…

成都网站优化seo,口碑营销5t理论,前端开发模板,建行业网站的必要性因为一个效果中的图片设置了wrap_content的属性,但在720dp跟540dp上面显示不一致使老大非常恼火。跟他讲也讲不明白。于是乎让我们彼此测试来探个究竟。首先测试的是个图片: 它的物理像素是256*256的。 首先是个简单的测试布局,一个textview显…

因为一个效果中的图片设置了wrap_content的属性,但在720dp跟540dp上面显示不一致使老大非常恼火。跟他讲也讲不明白。于是乎让我们彼此测试来探个究竟。首先测试的是个图片:

它的物理像素是256*256的。

首先是个简单的测试布局,一个textview显示测试结果,一个imageview用来展示这张图片。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/test"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="top|center_horizontal"android:textColor="#009933"android:textSize="20sp" /><ImageViewandroid:id="@+id/test_iv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="top|center_horizontal"android:background="@drawable/origami_colored_pencil_02" /></LinearLayout>

首次测试时的宽高属性均为wrap_content,测试结果如下:

可以看到,测试手机为nexus 5,屏幕密度为3.0,屏幕dp分辨率为360*592。图片的物理分辨率为256*256,而显示后的宽高为768*768,可见是物理分辨率乘以密度的结果。

而将布局文件中的宽高属性都设为256dp之后,测试结果如下图:

是的,你没有看错,跟属性均为wrap_content时的测试结果是一致的。由此可以看出,在将imageview的宽高设置为wrap_content时,系统实际上是将背景图片的实际物理分辨率以dp单位的形式来展现出来的。而显示的图片转化成bitmap之后获取的width跟height实际上是在手机设备屏幕的物理分辨率。这点有点意思~

然后更有意思的在下面:

接着将imageview的宽高属性都设置为fill_parent,此时的测试结果如下:

在将imageview的属性宽设为fill_parent,高设为wrap_content后,测试结果如下:

想到这种结果没有?对的,是获取的bitmap大小依然为768*768!!!可见系统虽然将图片的显示变了样子但其大小依然没有发生变化,是其物理属性的大小乘以屏幕密度所的大小!

虽然亲眼看到出现这样的情况,但本人其实并不太明白这其中究竟是怎么回事,希望看到这篇博客的同行,了解其中原理的,能给个使人信服的解释。

祝好!

Ps:本人手机是LG Nexus 5,系统4.4.2,网站上介绍其屏幕物理分辨率为1920*1080,但实际上只有1776*1080,唉,最讨厌前台销售人员了,尽是忽悠~

下面是两个测试文件:

package com.peter.androidoverridedtest;import com.peter.androidoverridedtest.util.DensityManager;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.ImageView;
import android.widget.TextView;public class TestActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.test);ImageView iv = (ImageView) findViewById(R.id.test_iv);BitmapDrawable bd=(BitmapDrawable) iv.getBackground();Bitmap b=bd.getBitmap();TextView tv = (TextView) findViewById(R.id.test);DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);int width = dm.widthPixels;int height = dm.heightPixels;int widthdp=DensityManager.px2dip(this, width);int heightdp=DensityManager.px2dip(this, height);tv.setText("屏幕密度:"+getResources().getDisplayMetrics().density+"\n屏幕dp:  "+widthdp+"*"+heightdp+"" +"\n屏幕像素:"+width+"x"+height+"" +"\n原始像素:256*256\n测试显示:" + b.getWidth() + "*" + b.getHeight());}
}
package com.peter.androidoverridedtest.util;import android.content.Context;
import android.util.DisplayMetrics;/*** @class: DensityManager* @Description: TODO* @author: Peter Pan* @email: happychinapc@gmail.com* @date: 2014-1-10 上午10:31:09* @since: 1.0.0**/
public class DensityManager {/*** 根据手机的分辨率从 dp 的单位 转成为 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);}
}

  

转载于:https://www.cnblogs.com/littlepanpc/p/3513929.html