首页 文章 精选 留言 我的

精选列表

搜索[Android],共10000篇文章
优秀的个人博客,低调大师

android 极细线

最后找到一个还算好用的方法:伪类 + transform 原理是把原先元素的 border 去掉,然后利用:before或者:after重做 border ,并 transform 的 scale 缩小一半,原先的元素相对定位,新做的 border 绝对定位 单条 border .hairlines li{ position: relative; border:none; } .hairlines li:after{ content: ''; position: absolute; left: 0; background: #000; width: 100%; height: 1px; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); -webkit-transform-origin: 0 0; transform-origin: 0 0; } 四条 border .hairlines li{ position: relative; border:none; } .hairlines li:after{ content: ''; position: absolute; top: 0; left: 0; border-bottom: 1px solid #000; //设置底边框极细线 -webkit-box-sizing: border-box; box-sizing: border-box; width: 200%; height: 200%; -webkit-transform: scale(0.5); transform: scale(0.5); -webkit-transform-origin: left top; transform-origin: left top; } //一般不用 样式使用的时候,也要结合 JS 代码,判断是否 Retina 屏 if(window.devicePixelRatio && devicePixelRatio >= 2){ document.querySelector('ul').className = 'hairlines'; } 这样会影响点击事件,所以在可以点击的地方的z-index大于加了极细线的,这样加了极细线的地方就不会挡住它上面的可以点击的地方。 下面的方法没有尝试: 在app应用开发中,我们常常都需要用到css3来设置应用的样式。由于app都是在移动设备上进行展示,所以边框描边的线一般都小于1px,而以往我们使用的都是1px及以上的。那么问题来了,对于小于1px的边框怎么处理呢?为大家介绍几种css3中细线边框的写法,希望对遇到类似问题的童鞋有帮助。 1、做一张高2像素(1像素有颜色1像素没颜色)的图片做背景,bg-size设置宽100%,高1px .line li{ background: url('line.png') left top no-repeat; background-size: 100% 1px; background-position: left bottom;} <ul class="line"> <li></li> <li></li> <li></li> </ul> 这种方法有一个问题,就是左右边框描边虽然可以做旋转(transform) ,但如果要是边框更换颜色那岂不是还要再做图片了; 2、通过上面的方法,我们也很容易联想到线性渐变(linear-gradient),具体实现如下: .line li{ border: none; background-image: -webkit-linear-gradient(#222 50%,transparent 50%); background-image: -moz-linear-gradient(#222 50%,transparent 50%); background-image: -o-linear-gradient(#222 50%,transparent 50%); background-image: linear-gradient(#222 50%,transparent 50%); background-size: 100% 1px; background-repeat: no-repeat; background-position: bottom;} <ul class="line"> <li>linear-gradient</li> <li>linear-gradient</li> <li>linear-gradient</li> </ul> 这种方法仍然不够完美,改变描边位置(left,top,right,bottom)时需要修改参数,如 left描边需要改变: background-image: -webkit-linear-gradient(left ,transparent 50%,#222 50%); background-size: 1px 100%; background-position: left; 3、那还有什么方法可以解决细线边框问题呢?我们不妨可以试试了CSS3阴影(box-shadow),用阴影做描边然后用伪类把多余的给遮罩着: .line li{box-shadow: inset 0 -1px 1px #000;background: #fff;margin-left: -1px;margin-bottom: 10px;position: relative;} .line li::after{content:'';position: absolute;top:0;left: 0px;right: 0px;bottom: 0px;border: 1px solid #fff;} <ul class="line"> <li>box-shadow</li> <li>box-shadow</li> <li>box-shadow</li> </ul> 虽然,小编分享的几种方法都还存在瑕疵,具体使用哪种方法,你可以根据你的情况而定。如果你有更完美的解决方案的话,也欢迎分享出来,大家一起学习,一起进步。 本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5633222.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android动态布局

每次都忘记,记下来,以后方便查找,代码是从现在的项目中Copy出来的,先来个relativeLayout的 private void setListPath(Context context, RelativeLayout footerRelativeLayout, String ButtonText) { if (flagAddFooterGuide) { // 我的音乐按钮 ImageView myMusic = new ImageView(context); myMusic.setImageResource(R.drawable.style1_mymusic); myMusic.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ((MyMusicActivity) myContext).setSdCardFlag(false); ((MyMusicActivity) myContext).onCreate(null); } }); myMusic.setId(1); // 设置ID为1 ImageView myStorage = new ImageView(context); myStorage.setImageResource(R.drawable.style1_mymusic_usbstore); myStorage.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 设置ListView为显示 ((MyMusicActivity) myContext).setlistViewLinearLayoutVisible(false); // GalleryVisible为隐藏 ((MyMusicActivity) myContext).setGalleryVisible(true); } }); myStorage.setId(2); // 设置id为2 // 设置本地当前目录的按钮 MyImageButton myImageButtonFolderNow = new MyImageButton(context, R.drawable.style1_mymusic_details, ButtonText); RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp1.addRule(RelativeLayout.ALIGN_PARENT_LEFT); RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp2.addRule(RelativeLayout.RIGHT_OF, 1);//在控件ID为1的控件的右边 RelativeLayout.LayoutParams lp3 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp3.addRule(RelativeLayout.RIGHT_OF, 2); footerRelativeLayout.addView(myMusic, lp1); footerRelativeLayout.addView(myStorage, lp2); // 播放按钮 MyImageButton myImageButtonPlay = new MyImageButton(context, R.drawable.mymusic_button_pause_backgroud, "播放"); footerRelativeLayout.addView(myImageButtonFolderNow, lp3); myImageButtonPlay.setId(4); RelativeLayout.LayoutParams lp4 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp4.addRule(RelativeLayout.LEFT_OF, 5); // 随机按钮 MyImageButton myImageButtonPlayRandom = new MyImageButton(context, R.drawable.mymusic_button_play_random, "随机开"); myImageButtonPlayRandom.setId(5); RelativeLayout.LayoutParams lp5 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp5.addRule(RelativeLayout.LEFT_OF, 6); // 歌词按钮 MyImageButton myImageButtonLyric = new MyImageButton(context, R.drawable.mymusic_button_lyric, "LRC歌词"); myImageButtonLyric.setId(6); RelativeLayout.LayoutParams lp6 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp6.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); // 加入 footerRelativeLayout.addView(myImageButtonLyric, lp6); footerRelativeLayout.addView(myImageButtonPlayRandom, lp5); footerRelativeLayout.addView(myImageButtonPlay, lp4); flagAddFooterGuide = false; ?[Copy to clipboard] Downloadzuiniuwang.java 再来个LinearLayout的 ?[Copy to clipboard] Downloadzuiniuwang.java super.onCreate(icicle); LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); btn = new Button(this); btn.setId(101); btn.setText("test looper"); btn.setOnClickListener(this); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(100,50); param.topMargin = 10; layout.addView(btn, param); btn2 = new Button(this); btn2.setId(102); btn2.setText("exit"); btn2.setOnClickListener(this); layout.addView(btn2, param); tv = new TextView(this); tv.setTextColor(Color.WHITE); tv.setText(""); //其中 FP 是final int FP=LinearLayout.LayoutParams.FILL_PARENT; //final int WC = LinearLayout.LayoutParams.WRAP_CONTENT; LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(FP, WC); param2.topMargin = 10; param2.setMargins(0, 0, 5, 0); //参数分别是(int left, int top, int right, int bottom) layout.addView(tv, param2); setContentView(layout); 一定要记住,创建的Parameter addview时,一定是这个子控件的参数,而不是这个容器本身的参数,这个相当重要,我在此处浪费了不少时间。如果需要对本Layout加入上参数可以 layout.setLayoutParams( XXX params) 和 layout.setXXX 便可。 本文转自 最牛傻蛋 51CTO博客,原文链接:http://blog.51cto.com/zuiniuwang/720070,如需转载请自行联系原作者

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册