Android笔记:代码编写布局

简介:

自己在shareSdk原有布局中添加一个加载过程的布局:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/** 新增:分享发送进度 **/
private  void  setLoadingUI()
{
     // 页面父布局
     pageLayout =  new  RelativeLayout(getContext());
     pageLayout.setLayoutParams( new  RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
                
     // 填充编辑页布局
     RelativeLayout.LayoutParams llPageLp =  new  RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
     llPage.setLayoutParams(llPageLp);
     pageLayout.addView(llPage);
                
     // 加载过程布局
     loadReLayout =  new  RelativeLayout(getContext());
     loadReLayout.setLayoutParams( new  RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
     loadReLayout.setClickable( true );
     loadReLayout.setBackgroundColor( 0x50000000 );
     loadReLayout.setVisibility(View.GONE);
     pageLayout.addView(loadReLayout);
                
     // 加载过程中间布局
     LinearLayout loadCenterLayout =  new  LinearLayout(getContext());
     RelativeLayout.LayoutParams lcLp =  new  RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
     lcLp.addRule(RelativeLayout.CENTER_IN_PARENT);
     loadCenterLayout.setPadding( 8 8 8 8 );
     loadCenterLayout.setBackgroundColor( 0xa5000000 );
     loadCenterLayout.setOrientation(LinearLayout.HORIZONTAL);
     loadReLayout.addView(loadCenterLayout, lcLp);
                
     // 进度条和加载中说明
     ProgressBar pb =  new  ProgressBar(getContext());
     pb.setLayoutParams( new  LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     loadCenterLayout.addView(pb);
                
     TextView loadText =  new  TextView(getContext());
     LayoutParams ltlp =  new  LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
     ltlp.setMargins( 8 0 0 0 );
     ltlp.gravity = Gravity.CENTER_VERTICAL;
     loadText.setLayoutParams(ltlp);
     loadText.setText( "正在转发分享..." );
     loadText.setTextSize( 16 );
     loadText.setTextColor(Color.WHITE);
     loadCenterLayout.addView(loadText);
}



原布局部分代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
private  void  initPageView()
{
     // 编辑页父布局
     llPage =  new  LinearLayout(getContext());
     llPage.setBackgroundColor( 0xff323232 );
     llPage.setOrientation(LinearLayout.VERTICAL);
                    
     // 新增:分享发送过程
     setLoadingUI();
                    
     // 标题栏
     llTitle =  new  TitleLayout(getContext());
     llTitle.setBackgroundResource(R.drawable.title_back);
     llTitle.getBtnBack().setOnClickListener( this );
     llTitle.getTvTitle().setText(R.string.multi_share);
     llTitle.getBtnRight().setVisibility(View.VISIBLE);
     llTitle.getBtnRight().setText(R.string.share);
     llTitle.getBtnRight().setOnClickListener( this );
     llTitle.setLayoutParams( new  LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
     llPage.addView(llTitle);
                    
     FrameLayout flPage =  new  FrameLayout(getContext());
     LinearLayout.LayoutParams lpFl =  new  LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
     lpFl.weight =  1 ;
     flPage.setLayoutParams(lpFl);
     llPage.addView(flPage);
                    
     // 页面主体
     LinearLayout llBody =  new  LinearLayout(getContext());
     llBody.setOrientation(LinearLayout.VERTICAL);
     FrameLayout.LayoutParams lpLl =  new  FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
     lpLl.gravity = Gravity.LEFT | Gravity.TOP;
     llBody.setLayoutParams(lpLl);
     flPage.addView(llBody);
                    
     // 别针图片
     ivPin =  new  ImageView(getContext());
     ivPin.setImageResource(R.drawable.pin);
     int  dp_80 = cn.sharesdk.framework.utils.R.dipToPx(getContext(),  80 );
     int  dp_36 = cn.sharesdk.framework.utils.R.dipToPx(getContext(),  36 );
     FrameLayout.LayoutParams lpPin =  new  FrameLayout.LayoutParams(dp_80, dp_36);
     lpPin.topMargin = cn.sharesdk.framework.utils.R.dipToPx(getContext(),  6 );
     lpPin.gravity = Gravity.RIGHT | Gravity.TOP;
     ivPin.setLayoutParams(lpPin);
     flPage.addView(ivPin);
                    
     ImageView ivShadow =  new  ImageView(getContext());
     ivShadow.setBackgroundResource(R.drawable.title_shadow);
     ivShadow.setImageResource(R.drawable.title_shadow);
     FrameLayout.LayoutParams lpSd =  new  FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
     ivShadow.setLayoutParams(lpSd);
     flPage.addView(ivShadow);
                    
     LinearLayout llInput =  new  LinearLayout(getContext());
     llInput.setMinimumHeight(cn.sharesdk.framework.utils.R.dipToPx(getContext(),  150 ));
     llInput.setBackgroundResource(R.drawable.edittext_back);
     LinearLayout.LayoutParams lpInput =  new  LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
     int  dp_3 = cn.sharesdk.framework.utils.R.dipToPx(getContext(),  3 );
     lpInput.setMargins(dp_3, dp_3, dp_3, dp_3);
     lpInput.weight =  1 ;
     llInput.setLayoutParams(lpInput);
     llBody.addView(llInput);
                    
                    
     //...
}


效果图:

wKioL1MZqxyDFRMYAAKfrCV_LO4758.jpg








本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1370018,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
|
4月前
|
移动开发 监控 前端开发
构建高效Android应用:从优化布局到提升性能
【7月更文挑战第60天】在移动开发领域,一个流畅且响应迅速的应用程序是用户留存的关键。针对Android平台,开发者面临的挑战包括多样化的设备兼容性和性能优化。本文将深入探讨如何通过改进布局设计、内存管理和多线程处理来构建高效的Android应用。我们将剖析布局优化的细节,并讨论最新的Android性能提升策略,以帮助开发者创建更快速、更流畅的用户体验。
71 10
|
2月前
|
Web App开发 安全 程序员
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
多年的互联网寒冬在今年尤为凛冽,坚守安卓开发愈发不易。面对是否转行或学习新技术的迷茫,安卓程序员可从三个方向进阶:1)钻研谷歌新技术,如Kotlin、Flutter、Jetpack等;2)拓展新功能应用,掌握Socket、OpenGL、WebRTC等专业领域技能;3)结合其他行业,如汽车、游戏、安全等,拓宽职业道路。这三个方向各有学习难度和保饭碗指数,助你在安卓开发领域持续成长。
82 1
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
|
2月前
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
31 1
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
110 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
2月前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
3月前
|
存储 Java Android开发
🔥Android开发大神揭秘:从菜鸟到高手,你的代码为何总是慢人一步?💻
在Android开发中,每位开发者都渴望应用响应迅速、体验流畅。然而,代码执行缓慢却是常见问题。本文将跟随一位大神的脚步,剖析三大典型案例:主线程阻塞导致卡顿、内存泄漏引发性能下降及不合理布局引起的渲染问题,并提供优化方案。通过学习这些技巧,你将能够显著提升应用性能,从新手蜕变为高手。
34 2
|
2月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
151 0
|
4月前
|
JSON JavaScript 前端开发
Android调用Vue中的JavaScript代码
Android调用Vue中的JavaScript代码
49 3
|
4月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
68 1