当前位置: 编程技术>移动开发
本页文章导读:
▪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>
,附上我测试的项目,希望对遇到同样问题的人有帮助。
最新技术文章: