利用代码实现Android多分辨率的对应——即一套图片对应多个分辨率
来源:互联网 发布:电信宽带软件 编辑:程序博客网 时间:2024/05/19 21:40
main.xml如下:
<RelativeLayout 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" > <TextView android:id="@+id/titleTextView" android:layout_width="150px" android:layout_height="50px" android:text="@string/hello_world" android:gravity="center" android:background="@android:color/black" android:textColor="@android:color/white" android:layout_centerHorizontal="true" /> <LinearLayout android:id="@+id/linearLayout" android:layout_width="fill_parent" android:layout_height="200px" android:layout_marginTop="80px" android:orientation="horizontal" > <Button android:id="@+id/firstButton" android:layout_width="150px" android:layout_height="100px" android:layout_marginLeft="50px" android:layout_marginTop="40px" android:orientation="horizontal" android:text="Button1" /> <Button android:id="@+id/secondButton" android:layout_width="150px" android:layout_height="100px" android:layout_marginLeft="100px" android:layout_marginTop="40px" android:orientation="horizontal" android:text="Button2" /> </LinearLayout> <RelativeLayout android:id="@+id/relativeLayout" android:layout_width="fill_parent" android:layout_height="300px" android:layout_marginTop="280px" > <ImageView android:id="@+id/firstImageView" android:layout_width="150px" android:layout_height="200px" android:layout_alignParentLeft="true" android:src="@drawable/icon" /> <ImageView android:id="@+id/secondImageView" android:layout_width="150px" android:layout_height="200px" android:layout_alignParentRight="true" android:src="@drawable/icon" /> </RelativeLayout></RelativeLayout>
ViewScaleUtil如下:
package cn.utils;import android.app.Activity;import android.util.DisplayMetrics;import android.util.TypedValue;import android.view.View;import android.widget.TextView;public class ViewScaleUtil {public static float sScale = 1.0f;public static final int BASE_SCREEN_WIDTH = 480;public static final int BASE_SCREEN_HEIGHT = 854;public static final int LAYOUT_PARAMS_TYPE_LINEAR_LAYOUT = 0;public static final int LAYOUT_PARAMS_TYPE_RELATIVE_LAYOUT = 1;public static final int LAYOUT_PARAMS_TYPE_FRAME_LAYOUT = 2;public static final int LAYOUT_PARAMS_WIDTH = 0;public static final int LAYOUT_PARAMS_HEIGHT = 1;public static final int LAYOUT_PARAMS_TOP_MARGIN = 2;public static final int LAYOUT_PARAMS_LEFT_MARGIN = 3;public static final int LAYOUT_PARAMS_BOTTOM_MARGIN = 4;public static final int LAYOUT_PARAMS_RIGHT_MARGIN = 5;public static final int LAYOUT_PARAMS_COUNT = 6;public static void setScale(Activity context) {int width, height;DisplayMetrics displayMetrics = new DisplayMetrics();context.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);height = displayMetrics.heightPixels;width = displayMetrics.widthPixels;sScale = (float) width / BASE_SCREEN_WIDTH;System.out.println("---> sScale="+sScale);}public static int[] scaleProcess(View view, int paramType) {if (view == null || sScale == 1.0f){return null;}int[] orgLayoutParams = new int[LAYOUT_PARAMS_COUNT];switch (paramType) {case LAYOUT_PARAMS_TYPE_LINEAR_LAYOUT:android.widget.LinearLayout.LayoutParams llp= (android.widget.LinearLayout.LayoutParams) view.getLayoutParams();orgLayoutParams[LAYOUT_PARAMS_WIDTH] = llp.width;orgLayoutParams[LAYOUT_PARAMS_HEIGHT] = llp.height;orgLayoutParams[LAYOUT_PARAMS_TOP_MARGIN] = llp.topMargin;orgLayoutParams[LAYOUT_PARAMS_LEFT_MARGIN] = llp.leftMargin;orgLayoutParams[LAYOUT_PARAMS_BOTTOM_MARGIN] = llp.bottomMargin;orgLayoutParams[LAYOUT_PARAMS_RIGHT_MARGIN] = llp.rightMargin;// Sizeif (llp.width > 0){llp.width = (int) Math.ceil(llp.width * sScale);}if (llp.height > 0){llp.height = (int) Math.ceil(llp.height * sScale);}// Marginllp.topMargin = (int) Math.ceil(llp.topMargin * sScale);llp.leftMargin = (int) Math.ceil(llp.leftMargin * sScale);llp.bottomMargin = (int) Math.ceil(llp.bottomMargin * sScale);llp.rightMargin = (int) Math.ceil(llp.rightMargin * sScale);view.setLayoutParams(llp);break;case LAYOUT_PARAMS_TYPE_RELATIVE_LAYOUT:android.widget.RelativeLayout.LayoutParams rlp = (android.widget.RelativeLayout.LayoutParams) view.getLayoutParams();orgLayoutParams[LAYOUT_PARAMS_HEIGHT] = rlp.height;orgLayoutParams[LAYOUT_PARAMS_TOP_MARGIN] = rlp.topMargin;orgLayoutParams[LAYOUT_PARAMS_LEFT_MARGIN] = rlp.leftMargin;orgLayoutParams[LAYOUT_PARAMS_BOTTOM_MARGIN] = rlp.bottomMargin;orgLayoutParams[LAYOUT_PARAMS_RIGHT_MARGIN] = rlp.rightMargin;// Sizeif (rlp.width > 0){rlp.width = (int) Math.ceil(rlp.width * sScale);}if (rlp.height > 0){rlp.height = (int) Math.ceil(rlp.height * sScale);}// Marginrlp.topMargin = (int) Math.ceil(rlp.topMargin * sScale);rlp.leftMargin = (int) Math.ceil(rlp.leftMargin * sScale);rlp.bottomMargin = (int) Math.ceil(rlp.bottomMargin * sScale);rlp.rightMargin = (int) Math.ceil(rlp.rightMargin * sScale);view.setLayoutParams(rlp);break;case LAYOUT_PARAMS_TYPE_FRAME_LAYOUT:android.widget.FrameLayout.LayoutParams flp = (android.widget.FrameLayout.LayoutParams) view.getLayoutParams();orgLayoutParams[LAYOUT_PARAMS_WIDTH] = flp.width;orgLayoutParams[LAYOUT_PARAMS_HEIGHT] = flp.height;orgLayoutParams[LAYOUT_PARAMS_TOP_MARGIN] = flp.topMargin;orgLayoutParams[LAYOUT_PARAMS_LEFT_MARGIN] = flp.leftMargin;orgLayoutParams[LAYOUT_PARAMS_BOTTOM_MARGIN] = flp.bottomMargin;orgLayoutParams[LAYOUT_PARAMS_RIGHT_MARGIN] = flp.rightMargin;// Sizeif (flp.width > 0){flp.width = (int) Math.ceil(flp.width * sScale);}if (flp.height > 0){flp.height = (int) Math.ceil(flp.height * sScale);}// Marginflp.topMargin = (int) Math.ceil(flp.topMargin * sScale);flp.leftMargin = (int) Math.ceil(flp.leftMargin * sScale);flp.bottomMargin = (int) Math.ceil(flp.bottomMargin * sScale);flp.rightMargin = (int) Math.ceil(flp.rightMargin * sScale);view.setLayoutParams(flp);break;}return orgLayoutParams;}public static int[] scaleProcessTextView(TextView view, int paramType) {if (view == null || sScale == 1.0f){return null;}int[] orgLayoutParams = scaleProcess(view, paramType);scaleProcessTextViewTextSize(view);return orgLayoutParams;}public static void scaleProcessTextViewTextSize(TextView view) {if (view == null || sScale == 1.0f){return;}float size = view.getTextSize();size *= sScale;view.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);}}
MainActivity如下:
package cn.testviewscaleutil;import cn.utils.ViewScaleUtil;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;import android.app.Activity;public class MainActivity extends Activity {private TextView mTitleTextView;private View mLinearLayout;private Button mFirstButton;private Button mSecondButton;private View mRelativeLayout;private ImageView mFirstImageView;private ImageView mSecondImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}private void init(){mLinearLayout=findViewById(R.id.linearLayout);mTitleTextView=(TextView) findViewById(R.id.titleTextView);mLinearLayout=findViewById(R.id.linearLayout);mFirstButton=(Button) findViewById(R.id.firstButton);mSecondButton=(Button) findViewById(R.id.secondButton);mRelativeLayout=findViewById(R.id.relativeLayout);mFirstImageView=(ImageView) findViewById(R.id.firstImageView);mSecondImageView=(ImageView) findViewById(R.id.secondImageView);ViewScaleUtil.setScale(MainActivity.this);ViewScaleUtil.scaleProcess(mTitleTextView, ViewScaleUtil.LAYOUT_PARAMS_TYPE_RELATIVE_LAYOUT);ViewScaleUtil.scaleProcess(mLinearLayout, ViewScaleUtil.LAYOUT_PARAMS_TYPE_RELATIVE_LAYOUT);ViewScaleUtil.scaleProcess(mFirstButton, ViewScaleUtil.LAYOUT_PARAMS_TYPE_LINEAR_LAYOUT);ViewScaleUtil.scaleProcess(mSecondButton, ViewScaleUtil.LAYOUT_PARAMS_TYPE_LINEAR_LAYOUT);ViewScaleUtil.scaleProcess(mRelativeLayout, ViewScaleUtil.LAYOUT_PARAMS_TYPE_RELATIVE_LAYOUT);ViewScaleUtil.scaleProcess(mFirstImageView, ViewScaleUtil.LAYOUT_PARAMS_TYPE_RELATIVE_LAYOUT);ViewScaleUtil.scaleProcess(mSecondImageView, ViewScaleUtil.LAYOUT_PARAMS_TYPE_RELATIVE_LAYOUT);}}
- 利用代码实现Android多分辨率的对应——即一套图片对应多个分辨率
- Android各个文件夹对应的分辨率?
- Android drawable文件夹对应分辨率
- Android不同drawable目录下对应图片分辨率
- Android不同drawable目录下对应图片分辨率
- Android不同drawable目录下对应图片分辨率
- android 不同drawable文件对应的dpi值,和所放图片分辨率
- Android 图片资源文件夹(hdpi,mdpi,xhdpi,xxhdpi,xxxhdpi)对应的手机分辨率
- Drawable分辨率对应表
- 分辨率与文件夹对应
- dpi对应图标分辨率
- Android各种分辨率一览,方便开发对应
- Android各种分辨率一览,方便开发对应
- 常见的分辨率对应vga编码
- iPhone设备的分辨率以及对应尺寸
- Android中多分辨率实现
- xml删掉对应id的节点(即想要删除的节点,可实现删除多个一样的节点)
- Android drawable文件夹 手机分辨率 dp px 对应 切图 关系
- rtsp流的通信流程
- Android三种左右滑动效果 手势识别
- Linux popen函数的使用总结
- delphi小技巧,提高工作效率
- hdu 1556 Color the ball
- 利用代码实现Android多分辨率的对应——即一套图片对应多个分辨率
- android+mtk6573+unbuntu11.10
- LAMP配置相关
- android中textview使用 html
- linux (ubuntu) SVN命令大全
- 常用awk命令
- web视频播放空间 flowplayer-3.2.16
- 单例模式
- 特么的上传文件