android布局适配
来源:互联网 发布:mysql5.7数据库下载 编辑:程序博客网 时间:2024/06/03 04:29
对于屏幕的适配解决方案:
对于比较灵活的布局:其他按钮的布局是根据按钮的布局进行显示的!
该布局不能以简单的横向或者竖向的比例关系进行计算出!
解决方案1:
需要切不同屏幕分辨率一些背景图片!
需要建立不同分辨率的values文件夹,里面对应的值不一样!
解决方案2:
对于比较灵活的布局:其他按钮的布局是根据按钮的布局进行显示的!
该布局不能以简单的横向或者竖向的比例关系进行计算出!
解决方案1:
需要切不同屏幕分辨率一些背景图片!
需要建立不同分辨率的values文件夹,里面对应的值不一样!
解决方案2:
建立其中的布局中的view对象的显示位置的关系式:进行计算!
例子:
如上图所示:
如何在布局中进行设置四个按钮的位置!
初始想法:
使用相对布局:将"文明监督"的按钮进行相对布局中"center_horizontal"----"横向居中显示",设置对象的半径长度"dp"值,"文明评论","文明动态","我的"--这几个模块进行设置对应的marginTop,marginLeft,marginRight值,以及半径设置成一个固定的dp值。
出现的问题:
在不同屏幕分辨率的手机上会导致四个按钮的位置或错乱!固定的半径的dp值并不能解决布局错乱的问题!
解决方案:
1:一个布局文件,但是对应的Values文件夹有不同分辨率的文件夹:
如下图:
不同values文件夹下的dimen文件:同一个字段名称--对应的值会不一样!
2:其实四个按钮:“文明监督”按钮是固定的位置:水平居中------其他三个按钮与文明监督按钮成一定的角度关系,半径成一定的比例关系,可以进行利用数学的几何关系:列出横向和竖向的关系式:
角度图如下:
关系变量:
final float comment_jiaodu=(float)((35.0/180.0)*Math.PI); final float state_jiaodu=(float)((16.0/180.0)*Math.PI); final float mine_jiaodu=(float)((20.0/180.0)*Math.PI); //文明评论,文明动态,我的与"文明监督"之间的半径比例关系 float comment_radius_rate=0.8f;//文明评论半径与文明监督半径关系比例 float comment_radius_rate_left=0.9f;//文明评论半径与文明监督半径交叉比例 float state_radius_rate=0.95f;//文明动态半径与文明监督半径关系比例 float state_radius_rate_left=0.9f;//文明动态半径与文明监督半径交叉比例 float mine_radius_rate=0.6f;//我的半径与文明监督半径关系比例 float mine_radius_rate_left=0.9f;//我的半径与文明监督半径交叉比例 //横向和属性空白之间的比例 float rate_x_1=0.06f,rate_x_2=0.06f,// rate_y_1=0.25f,rate_y_2=0.15f; float rate_supervise_radius=0.1f;//文明监督背景的比例/实际半径 float rate_supervise_background_width_height_1=0.9533f; <pre style="background-color:#ffffff;color:#000000;font-family:'宋体';font-size:9.0pt;">//进行横向和竖向的条件:获取min(r1,r2) float r1=(float)((scressWidth*(1-rate_x_1-rate_x_2))/ (((1+rate_supervise_radius+comment_radius_rate*comment_radius_rate_left)*Math.cos(comment_jiaodu))+// (1+rate_supervise_radius+mine_radius_rate*mine_radius_rate_left)*Math.cos(mine_jiaodu)+// mine_radius_rate+comment_radius_rate)); float r2=(float)(((main_rl_height*(1-rate_y_2))/(1+// (1+rate_supervise_radius+state_radius_rate*state_radius_rate_left)*Math.cos(state_jiaodu)+// state_radius_rate+rate_y_1))); System.out.println("radius_supervise r1:"+r1+"..r2:"+r2); //进行获取最小的半径 radius_supervise=Math.min(r1,r2); System.out.println("radius_supervise:"+radius_supervise+"..comment_jiaodu:"+comment_jiaodu+"..state_jiaodu:"+state_jiaodu+"..mine_jiaodu:"+mine_jiaodu); radius_supervise_out=radius_supervise+radius_supervise*rate_supervise_radius; //进行设置各自的宽度和margin值 //文明监督 rl_supervise_background.getLayoutParams().width=// (int)(radius_supervise*(rate_supervise_radius+1))*2; rl_supervise_background.getLayoutParams().height=// (int)(rl_supervise_background.getLayoutParams().width/rate_supervise_background_width_height_1);// rl_supervise_background.getLayoutParams().width=(int)radius_supervise_out; rl_supervise_background.requestLayout(); rl_civilization_supervise.getLayoutParams().height=(int)radius_supervise*2; rl_civilization_supervise.getLayoutParams().width=(int)radius_supervise*2; ((ViewGroup.MarginLayoutParams)rl_civilization_supervise.getLayoutParams()).topMargin=(int)((rate_y_1)*radius_supervise); rl_civilization_supervise.requestLayout(); //设置btnSupervise的padding值 btnSupervise.setPadding(btnSupervise.getPaddingLeft(),(int)(radius_supervise*0.7),btnSupervise.getPaddingRight(),btnSupervise.getPaddingBottom()); //文明评论 rl_comment.getLayoutParams().height=(int)(comment_radius_rate*radius_supervise)*2; rl_comment.getLayoutParams().width=(int)(comment_radius_rate*radius_supervise)*2; ((ViewGroup.MarginLayoutParams)rl_comment.getLayoutParams()).topMargin=// (int)(radius_supervise+rate_y_1*radius_supervise+// Math.sin(comment_jiaodu)*(1+comment_radius_rate*comment_radius_rate_left+rate_supervise_radius)*radius_supervise-// comment_radius_rate*radius_supervise); ((ViewGroup.MarginLayoutParams)rl_comment.getLayoutParams()).leftMargin=// (int)(scressWidth*0.5-(Math.cos(comment_jiaodu)*(1+comment_radius_rate*comment_radius_rate_left+rate_supervise_radius)*radius_supervise)- comment_radius_rate*radius_supervise); System.out.println("radius_supervise rl_comment.getLayoutParams()).leftMargin:" + ((ViewGroup.MarginLayoutParams) rl_comment.getLayoutParams()).leftMargin + "...");//- comment_radius_rate*radius_supervise rl_comment.requestLayout(); //我的模块 rl_mine.getLayoutParams().height=(int)(mine_radius_rate*radius_supervise)*2; rl_mine.getLayoutParams().width=(int)(mine_radius_rate*radius_supervise)*2; ((ViewGroup.MarginLayoutParams)rl_mine.getLayoutParams()).topMargin= (int)(radius_supervise+rate_y_1*radius_supervise+(1+mine_radius_rate*mine_radius_rate_left+rate_supervise_radius)*radius_supervise*Math.sin(mine_jiaodu)-// mine_radius_rate*radius_supervise); ((ViewGroup.MarginLayoutParams)rl_mine.getLayoutParams()).rightMargin=// (int)(scressWidth*0.5-Math.cos(mine_jiaodu)*(1+rate_supervise_radius+mine_radius_rate*mine_radius_rate_left)*radius_supervise-// mine_radius_rate*radius_supervise); rl_mine.requestLayout(); //文明动态 rl_civi_state.getLayoutParams().height=(int)(state_radius_rate*radius_supervise)*2; rl_civi_state.getLayoutParams().width=(int)(state_radius_rate*radius_supervise)*2; ((ViewGroup.MarginLayoutParams)rl_civi_state.getLayoutParams()).topMargin=// (int)((Math.cos(state_jiaodu)*(1+state_radius_rate*state_radius_rate_left+rate_supervise_radius))*radius_supervise-radius_supervise+ radius_supervise+rate_y_1*radius_supervise); ((ViewGroup.MarginLayoutParams)rl_civi_state.getLayoutParams()).leftMargin=// (int)(0.5*scressWidth-(radius_supervise*state_radius_rate-// Math.sin(state_jiaodu)*(1+state_radius_rate*state_radius_rate_left+rate_supervise_radius)*radius_supervise)); rl_civi_state.requestLayout();
0 0
- android布局适配
- android布局适配
- android布局适配
- Android 布局 屏幕适配
- Android 布局 屏幕适配
- android布局技巧之屏幕适配
- Android屏幕适配,百分比布局
- Android屏幕适配,百分比布局
- android百分比布局学习,适配相关
- Android适配之百分比布局
- android 布局适配虚拟键适配
- Android 布局:相对布局
- android屏幕适配不同的资源图片、布局
- Android屏幕适配不同的资源图片、布局
- android屏幕适配不同的资源图片、布局
- Android屏幕适配不同的资源图片和布局
- Android屏幕适配不同的资源图片、布局
- Android分辨率适配layout布局的问题
- spring+quartz实现任务调度
- Linux下的管道通信
- 【网站国际化必备】Asp.Net MVC 集成Paypal(贝宝)快速结账 支付接口 ,附源码demo
- MATLAB 中的fix(),floor(),ceil(),以及round()
- 游戏开发中嵌入直播因素
- android布局适配
- 网络基础技术:从HttpURLConnection到Volley框架
- javascript函数+闭包+立即执行函数
- 最短路 dijkstra算法 poj2387 bellman_ford spfa
- activity四种启动模式
- 算法-第四版-练习1.3.24解答
- leetcode242: Valid Anagram
- 用js定义类
- Mac mysql + sequel pro + netbeans