android开发中ImageView在显示的时候,受限于屏幕大小和宽高。通常是被缩放过,且不是宽和高都充满ImageView的,获得被实际绘制的宽高大小代码如下:
final ImageView iv = (ImageView) findViewById(Ridiv_test);ivsetImageResource(Rdrawableabc);
//等待ImageVivew加载完成
ivpost(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
//ImageView的宽和高
Logd("lxy", "iv_W = " + ivgetWidth() + ", iv_H = " + ivgetHeight());
//获得ImageView中Image的真实宽高,
int dw = ivgetDrawable()getBounds()width();
int dh = ivgetDrawable()getBounds()height();
Logd("lxy", "drawable_X = " + dw + ", drawable_Y = " + dh);
//获得ImageView中Image的变换矩阵
Matrix m = ivgetImageMatrix();
float[] values = new float[10];
mgetValues(values);
//Image在绘制过程中的变换矩阵,从中获得x和y方向的缩放系数
float sx = values[0];
float sy = values[4];
Logd("lxy", "scale_X = " + sx + ", scale_Y = " + sy);
//计算Image在屏幕上实际绘制的宽高
int cw = (int)(dw sx);
int ch = (int)(dh sy);
Logd("lxy", "caculate_W = " + cw + ", caculate_H = " + ch);
}});
关键字: 屏幕适配 px dp dpi sp large限定符 9png
前言: 这篇文章依然是我在 [慕课网 ][h]学习 凯子哥 的同名视频 Android-屏幕适配全攻略 ,所记录下来的笔记---凯子哥讲得真的超详细。
[h]: >
获取屏幕分辨率的方式如下:
一、在activity中
1、DisplayMetrics dm = getResources()getDisplayMetrics();
int screenWidth = dmwidthPixels;
int screenHeight = dmheightPixels;
2、DisplayMetrics dm = new DisplayMetrics();
thisgetWindowManager()getDefaultDisplay()getMetrics(dm);
int screenWidth = dmwidthPixels;
int screenHeight = dmheightPixels;
二、在service中
DisplayMetrics dm = new DisplayMetrics();
dm = getResources()getDisplayMetrics();
int screenWidth = dmwidthPixels;
int screenHeight = dmheightPixels;
三、在非activity中,传一个Context进来调用
1、public ImageGalleryAdapter(Context c) {
myContext = c;
DisplayMetrics dm = cgetResources()getDisplayMetrics();
int screenWidth = dmwidthPixels;
int screenHeight = dmheightPixels;
}
2、public class BaseTools {
public static int getWindowWidth(Context context){
// 获取屏幕分辨率
WindowManager wm = (WindowManager) (contextgetSystemService(ContextWINDOW_SERVICE));
DisplayMetrics dm = new DisplayMetrics();
wmgetDefaultDisplay()getMetrics(dm);
int mScreenWidth = dmwidthPixels;
return mScreenWidth;
}
public static int getWindowHeigh(Context context){
// 获取屏幕分辨率
WindowManager wm = (WindowManager) (contextgetSystemService(ContextWINDOW_SERVICE));
DisplayMetrics dm = new DisplayMetrics();
wmgetDefaultDisplay()getMetrics(dm);
int mScreenHeigh = dmheightPixels;
return mScreenHeigh;
}
}
以上就是关于怎么获得一个Imageview的大小全部的内容,包括:怎么获得一个Imageview的大小、Android-屏幕适配全攻略(绝对详细)(一)、android获取屏幕的分辨率方法有几种等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)