当前位置: 编程技术>移动开发
本页文章导读:
▪density, dip, px, 分辨率的1点理解 density, dip, px, 分辨率的一点理解
主要的知识在:http://xy0811.spaces.live.com/Blog/cns!F8AECD2A067A6B17!1508.entry我这里只说说我自己的理解:先说清楚一点:什么是显示点阵显示点阵就是指在显示屏上.........
▪ 封锁GPS 关闭GPS
public class MainActivity extends Activity {
private LocationManager locationManager;
private TextView tv;
private StringBuilder builder = new StringBuilder("位置信息:\n");
private LocationListener ll;
public void getLocation(){
l.........
▪ 解决在练习gallery时编译出错的有关问题 解决在练习gallery时编译出错的问题
在练习时遇到编译器发出 android.R.styleable 不能找到的错误. (android.R.styleable cannot be resolved),在网上找了半天,然后分析其他的例子终于解决了,其实就.........
[1]density, dip, px, 分辨率的1点理解
来源: 互联网 发布时间: 2014-02-18
density, dip, px, 分辨率的一点理解
主要的知识在:http://xy0811.spaces.live.com/Blog/cns!F8AECD2A067A6B17!1508.entry
我这里只说说我自己的理解:
先说清楚一点:什么是显示点阵
显示点阵就是指在显示屏上长和宽各能显示出多少个像素点,或者在LED显示屏上长和宽有多少个LED会同时发光。
在显示屏上,真正能够显示出来的像素点是有限的,并不是说,你每英寸上的像素点越多就显示的越多。对于一个显示尺寸一定的显示屏,其能够显示的像素点是一定的,即其density是一定的。
在软件的显示单位是分辨率。分辨率相当于一个距阵,表示其中的点数。并不是分辨率越大,其显示屏就越大,这还要看其像素点的密度。如果分辨率一样,密度大的,其屏自然就会小。
由于在计算机中的字体是以像素为单位,所以当密度变大时,即分辨率变大的时候,其字体就越小,当密度变小时,即分辨率变小时,其字体就越大。
但对于density(显示点)来说,如果LED的技术不变,屏的大小不变的情况下,其值是不会变化的。
对于一个显示的界面,我们自然是希望,在屏的大小不变的情况下,不要变化,如果屏变大的情况下,也随之而变大。所以这时,可以跟据density来计算。也就是对态的改变view的px值。这样就可以做到view的显示效果不会随分辨率的变化而变化。而可以随屏的大小而变化。但如果是在屏的大小一定的情况下,去改分辨率,其view肯定也会变化。但在手机中,分辨率时,其屏也一定会变化。这样或多或少可以起到一些作用。
所以,如果美工给的480*800(这时density=240)的界面时,如果我们要用dip来做单位的话,我们应该把数值进行转化一下, dip = px * 160/240
所以,真正要做适配的,只有是当图片被拉抻后,是否变形了,如果变形了,就要做适配,如果没有变形,就不要做适配。
我们一般说手机大小为:3.5英寸,这个指的是:手机对角线的长为3.5英寸,但不能计算出其长和高,因为不知道厂商会以什么比例的长宽来做。
对于分辨率,我们会说480*800像素,但有时又会用每英寸96*96像素,如果在做效果图的时候,把每英寸的像素调小,就可以看到很大的图片,但是到手机上后,其大小会缩小,原因是手机的每英寸的大小要大。
但是如果想做两张大小一样的图片(指在手机上显示时大小要一样),这时,这两张图片的每英寸的大小要设置成一样的。不然在手机上显示时,其大小会不一样。在电脑上显示时,其大小是一样的。
主要的知识在:http://xy0811.spaces.live.com/Blog/cns!F8AECD2A067A6B17!1508.entry
我这里只说说我自己的理解:
先说清楚一点:什么是显示点阵
显示点阵就是指在显示屏上长和宽各能显示出多少个像素点,或者在LED显示屏上长和宽有多少个LED会同时发光。
在显示屏上,真正能够显示出来的像素点是有限的,并不是说,你每英寸上的像素点越多就显示的越多。对于一个显示尺寸一定的显示屏,其能够显示的像素点是一定的,即其density是一定的。
在软件的显示单位是分辨率。分辨率相当于一个距阵,表示其中的点数。并不是分辨率越大,其显示屏就越大,这还要看其像素点的密度。如果分辨率一样,密度大的,其屏自然就会小。
由于在计算机中的字体是以像素为单位,所以当密度变大时,即分辨率变大的时候,其字体就越小,当密度变小时,即分辨率变小时,其字体就越大。
但对于density(显示点)来说,如果LED的技术不变,屏的大小不变的情况下,其值是不会变化的。
对于一个显示的界面,我们自然是希望,在屏的大小不变的情况下,不要变化,如果屏变大的情况下,也随之而变大。所以这时,可以跟据density来计算。也就是对态的改变view的px值。这样就可以做到view的显示效果不会随分辨率的变化而变化。而可以随屏的大小而变化。但如果是在屏的大小一定的情况下,去改分辨率,其view肯定也会变化。但在手机中,分辨率时,其屏也一定会变化。这样或多或少可以起到一些作用。
所以,如果美工给的480*800(这时density=240)的界面时,如果我们要用dip来做单位的话,我们应该把数值进行转化一下, dip = px * 160/240
所以,真正要做适配的,只有是当图片被拉抻后,是否变形了,如果变形了,就要做适配,如果没有变形,就不要做适配。
我们一般说手机大小为:3.5英寸,这个指的是:手机对角线的长为3.5英寸,但不能计算出其长和高,因为不知道厂商会以什么比例的长宽来做。
对于分辨率,我们会说480*800像素,但有时又会用每英寸96*96像素,如果在做效果图的时候,把每英寸的像素调小,就可以看到很大的图片,但是到手机上后,其大小会缩小,原因是手机的每英寸的大小要大。
但是如果想做两张大小一样的图片(指在手机上显示时大小要一样),这时,这两张图片的每英寸的大小要设置成一样的。不然在手机上显示时,其大小会不一样。在电脑上显示时,其大小是一样的。
1 楼
yxxcrliweifeng
2010-12-24
理解地好深啊!
[2] 封锁GPS
来源: 互联网 发布时间: 2014-02-18
关闭GPS
public class MainActivity extends Activity { private LocationManager locationManager; private TextView tv; private StringBuilder builder = new StringBuilder("位置信息:\n"); private LocationListener ll; public void getLocation(){ locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); String provider = LocationManager.GPS_PROVIDER; Location location = locationManager .getLastKnownLocation(provider); updateMsg(location); ll = new LocationListener(){ public void onLocationChanged(Location location) { updateMsg(location); } public void onProviderDisabled(String provider) { } public void onProviderEnabled(String provider) { } public void onStatusChanged(String provider, int status, Bundle extras) { } }; locationManager.requestLocationUpdates(provider, 2000, 10, ll); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView) findViewById(R.id.mTextView); Button mLocation = (Button)findViewById(R.id.mLocation); mLocation.setOnClickListener(new OnClickListener() { public void onClick(View v) { getLocation(); } }); } private void updateMsg(Location l) { if (l != null) { double lat = l.getLatitude(); double lng = l.getLongitude(); builder.append("("); builder.append(lat); builder.append(","); builder.append(lng); builder.append(")"); if(l.hasAccuracy()){ builder.append("\n精度:"); builder.append(l.getAccuracy()); } if(l.hasAltitude()){ builder.append("\n高度:"); builder.append(l.getAltitude()); } if(l.hasBearing()){ builder.append("\n方向:"); builder.append(l.getBearing()); } if(l.hasSpeed()){ builder.append("\n速度:"); builder.append(l.getSpeed()); } builder.append("\n"); } else { builder.append("没有位置信息"); } tv.setText(builder); } public void onResume() { if(locationManager != null) { locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1, ll); } super.onResume(); }
public void onPause() { if(locationManager != null) { locationManager.removeUpdates(ll); } super.onPause(); } }
最近做了一个Gps定位的系统项目,不过研究几天还是没有进展。到最后项目经理告诉我解决方法,和大家分享一下。
[3] 解决在练习gallery时编译出错的有关问题
来源: 互联网 发布时间: 2014-02-18
解决在练习gallery时编译出错的问题
在练习时遇到编译器发出 android.R.styleable 不能找到的错误. (android.R.styleable cannot be resolved),在网上找了半天,然后分析其他的例子终于解决了,其实就是添加attars.xml到 res/values文件夹下,下面是这个文件的内容
<resources>
<declare-styleable name="Gallery">
<attr name="android:galleryItemBackground">
</attr>
</declare-styleable>
</resources>
,附上我测试的项目,希望对遇到同样问题的人有帮助。
在练习时遇到编译器发出 android.R.styleable 不能找到的错误. (android.R.styleable cannot be resolved),在网上找了半天,然后分析其他的例子终于解决了,其实就是添加attars.xml到 res/values文件夹下,下面是这个文件的内容
<resources>
<declare-styleable name="Gallery">
<attr name="android:galleryItemBackground">
</attr>
</declare-styleable>
</resources>
,附上我测试的项目,希望对遇到同样问题的人有帮助。
最新技术文章: