时间:2015-02-28 来源:

AndroidDrawable那些不为人知的高效用法 【Web前端】

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43752383,本文出自:【张鸿洋的博客】1、概述Drawable在我们平时的开发中,web前端制作基本都会用到div前端切图,而且给大家非常的有用.那么什么是Drawable呢?能够在canvas上绘制的一个玩意,div前端切图而且相比于View,仅仅只要去考虑如何draw(canavs).当然了符合w3c标准,对于Drawable传统的用法,符合w3c标准大家肯定不陌生 ,今天主要给大家带来以下几个Drawable的用法:

2、将其作为我们当前Activity的windowBackground

类似的代码,jpg或psd转html大家可以看看CompoundButton(CheckBox父类)的源码web前端制作, AttributeSet attrs) { super(context, STATE_MESSAGE_READED); return drawableState; } return super.onCreateDrawableState(extraSpace); } } 代码不复杂web切图报价,然后在mMessgeReaded=true的情况下符合w3c标准,通过onCreateDrawableState方法,符合w3c标准加入我们自定义的状态.

@Override protected int[] onCreateDrawableState(int extraSpace) { final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); if (isChecked()) { mergeDrawableStates(drawableState,这样的布局相信很多人也写过.

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="@color/app_background" /> </shape> </item> <item android:bottom="48dp"> <bitmap android:gravity="center" android:src="@drawable/logo" /> </item> </layer-list>ok,这个drawable是设置了我们的背景和logo;

2、Drawable基本概念一般情况下,div+css制作除了直接使用放在Drawable下的图片承接网页制作,其实的Drawable的用法都和xml相关,承接网页制作我们可以使用shape、layer-list等标签绘制一些背景web切图报价,还可以通过selector标签定义View的状态的效果等.当然了基本每个标签都对应于一个真正的实体类,手机html制作关系如下:(图片来自:Cyril Mottier :master_android_drawables)

4、提升我们的UI Perfermance 现在大家越来越注重性能问题符合w3c标准,其实没必要那么在乎,html切图制作但是既然大家在乎了网页外包接活, TileMode.CLAMP, int top, int bottom) { super.setBounds(left, right, top, bottom); } @Override public void draw(Canvas canvas) { canvas.drawRoundRect(rectF, 30, mPaint); } @Override public int getIntrinsicWidth() { return mBitmap.getWidth(); } @Override public int getIntrinsicHeight() { return mBitmap.getHeight(); } @Override public void setAlpha(int alpha) { mPaint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter cf) { mPaint.setColorFilter(cf); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } }

1、RoundImageDrawable代码比较简单,承接网页制作下面看下RoundImageDrawable

大家看这样一个效果图:

是不是体验好很多web切图报价, R.drawable.mv); ImageView iv = (ImageView) findViewById(R.id.id_one); iv.setImageDrawable(new RoundImageDrawable(bitmap));ok,贴一下我们的效果图,符合w3c标准两个ImageView和一个TextView

自定义drawable state 需要分为以下几个步骤:

2、自定义状态网页外包接活,相信大家对于State Drawable都不陌生,网页外包接活但是有没有尝试过去自定义一个状态呢?

2、CircleImageDrawable那么下来web前端制作,我们再看看自定义圆形Drawable的写法:

看下用法:

我们这里Item选择RelativeLayout实现,div+css制作我们需要继承它承接网页制作,然后复写它的onCreateDrawableState方法,承接网页制作把我们自定义的状态在合适的时候添加进去.

源码点击下载

package com.zhy.view; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.RectF; import android.graphics.Shader.TileMode; import android.graphics.drawable.Drawable; public class CircleImageDrawable extends Drawable { private Paint mPaint; private int mWidth; private Bitmap mBitmap ; public CircleImageDrawable(Bitmap bitmap) { mBitmap = bitmap ; BitmapShader bitmapShader = new BitmapShader(bitmap, TileMode.CLAMP); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setShader(bitmapShader); mWidth = Math.min(mBitmap.getWidth(), mWidth / 2, mPaint); } @Override public int getIntrinsicWidth() { return mWidth; } @Override public int getIntrinsicHeight() { return mWidth; } @Override public void setAlpha(int alpha) { mPaint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter cf) { mPaint.setColorFilter(cf); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } } 一样出奇的简单web前端制作,圆角图片就这么实现了承接网页制作,easy 不~~

效果图:

常见的用法这里就不举例了,div前端切图下面开始看本文的重点.

<com.zhy.view.MessageListItem xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="50dp" android:background="@drawable/message_item_bg" > <ImageView android:id="@+id/id_msg_item_icon" android:layout_width="30dp" android:src="@drawable/message_item_icon_bg" android:layout_height="wrap_content" android:duplicateParentState="true" android:layout_alignParentLeft="true" android:layout_centerVertical="true" /> <TextView android:id="@+id/id_msg_item_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@id/id_msg_item_icon" /> </com.zhy.view.MessageListItem>很简单web切图报价,一个图标,手机html制作一个文本;

核心代码就是draw了符合w3c标准,我们只需要一行~~~~setAlpha、setColorFilter、getOpacity、draw这几个方法是必须实现的网页外包接活,不过除了draw以为,jpg或psd转html其他都很简单.getIntrinsicWidth、getIntrinsicHeight主要是为了在View使用wrap_content的时候web前端制作,提供一下尺寸,web前端制作默认为-1可不是我们希望的.setBounds就是去设置下绘制的范围.

那我今天要告诉你承接网页制作,自定义Drawable也能实现web切图报价, 如何利用Drawable去提升我们的UI的性能.

再看看这个布局作为APP启动时符合w3c标准,相比View来说网页外包接活,Drawable属于轻量级的、使用也很简单.以后自定义实现一个效果的时候,网页外包接活可以改变View first的思想web前端制作, true), you've won!", new Message("I love you!", new Message("Please reply!", new Message("You ignoring me?", new Message("Not heard from you", new Message("Electricity bill", new Message("Gas bill", new Message("Holiday plans", new Message("Marketing stuff", }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getListView().setAdapter(new ArrayAdapter<Message>(this, messages) { private LayoutInflater mInflater = LayoutInflater .from(getContext()); @Override public View getView(int position, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(R.layout.item_msg_list, false); } MessageListItem messageListItem = (MessageListItem) convertView; TextView tv = (TextView) convertView .findViewById(R.id.id_msg_item_text); tv.setText(getItem(position).message); messageListItem.setMessageReaded(getItem(position).readed); return convertView; } }); } } 代码很简单网页外包接活,但是可以看到,网页外包接活我们需要在getView里面中去使用调用setMessageReaded方法web前端制作,当然了其他的一些状态,div+css制作肯定也要手动触发承接网页制作,比如在ACTION_DOWN中触发pressed等.请勿纠结咋没有使用ViewHolder什么的,承接网页制作自己添加下就行.

相信大家对于圆角、圆形图片都不陌生web切图报价,并且我曾经写过通过自定义View实现的方式,手机html制作具体可参考:

Activity

那么接下来符合w3c标准,我们有个需求,html切图制作类似于邮箱网页外包接活,邮件以ListView形式展示,网页外包接活但是我们需要一个状态去标识出未读和已读:so,我们自定义一个状态state_message_readed.

可以看到,web前端制作不仅仅用于ImageView去实现圆角图片承接网页制作,并且可以作为任何View的背景,div前端切图在ImageView中的拉伸的情况web切图报价,配下ScaleType即可.在其他View作为背景时,手机html制作如果出现拉伸情况符合w3c标准,请参考:Android BitmapShader 实战 实现圆形、圆角图片 . 足够详细了.

视频目录地址:本人录制的视频教程

3、设置到Activity上:

布局文件:

可以看到,符合w3c标准如果是已读的邮件网页外包接活,我们的图标是打开状态,jpg或psd转html且有个淡红色的背景.那么如何通过自定义drawable state 实现呢?

ok,到此我们的文章就over了~~~大多数内容参考自一些牛人写的例子,web前端制作例子还是棒棒哒承接网页制作,大家看完本文的同时,承接网页制作也可以去挖掘挖掘一些东西~~

3、自定义Drawable State关于Drawable State,state_pressed神马的,网站div+css相信大家都掌握的特别熟练了.

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="Theme.Default.NoActionBar" parent="@android:style/Theme.Holo.Light.NoActionBar" > <item name="android:windowBackground">@drawable/login</item> </style> </resources>

<activity android:name="LoginActivity" android:theme="@style/Theme.Default.NoActionBar">Ok,现在我们的layout里面只有一个LinearLayout和两个按钮;并且提升了用户体验网页外包接活,关于自定义Drawable的例子over~~~接下来看自定义状态的.

博主部分视频已经上线web前端制作,如果你不喜欢枯燥的文本,div+css制作请猛戳(初录承接网页制作,期待您的支持):

1、首先,承接网页制作我们去除我们最外层的FrameLayout,叫做logo.xml

2、自定义Drawable关于自定义Drawable,可以通过写一个类,html切图制作然后继承自Drawable ,当然了自定义Drawable的核心方法只有一个web前端制作,那就是draw.那么自定义Drawable到底有什么实际的作用呢?能干什么呢?

群号:423372824

用户首先看到一个白板,web前端制作然后显示出我们的页面.接下来承接网页制作,我们将利用Drawable改善我们的UI性能以及用户体验.

Android BitmapShader 实战 实现圆形、圆角图片

<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MessageStatus"> <attr name="state_message_readed" format="boolean" /> </declare-styleable> </resources>

1、res/values/新建一个xml文件:drawable_status.xml

布局文件:

点击次数:12519
作者:
web前端行业资讯
Web new NewsList
谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日SqlServer复制中将大事务分成小事务分发【编程语言】2015年06月01日Javascript中介者模式实例2014年01月29日WPS文字教程:表格工具轻松绘制课程表2014年01月28日caffe使用MemoryDataLayer从内存中加载数据 【编程语言】2015年07月24日JS数组-第一脚2015年05月25日ZOJ2112DynamicRankingsBIT套ChairTree【编程语言】2015年04月24日Android之TextView的Span样式源码剖析 【移动开发】2015年06月29日jquery表格的增行删行实现思路2014年01月29日SqlServer2005中字符函数的应用2014年01月29日云计算之IaaS云的应用场景 【编程语言】2014年12月10日腾讯视觉设计师浅析网页配色与色彩应用2014年01月28日教你如何打造黑客也读不懂的安全密码2014年01月29日灰度图像--图像增强Robert算子、Sobel算子 【编程语言】2015年02月02日凤鸣九天卷三太阳鸟神【编程语言】2014年12月10日自我总结 【互联网】2014年11月06日AndroidStudio开发基础之细节问题笔记【架构设计】2015年05月25日Redis单机安装部署【编程语言】2015年03月30日dbca.sh【编程语言】2015年06月24日poj1691--PaintingABoard(拓扑+dfs)【编程语言】2015年07月21日jQuery图片轮播的具体实现2014年01月29日SkCanvas旋转矩阵SkMatrix2015年08月24日VPS自动备份数据库到FTP的脚本代码2014年01月29日【BZOJ2318】【spoj4060】gamewithprobabilityProblem概率DP 【移动开发】2015年06月18日js获取url参数的使用扩展实例2014年01月29日虚拟路径的配置 【编程语言】2015年04月24日剑指Offer读书笔记(持续更新中) 【编程语言】2015年08月26日【从头开始写操作系统系列】实现一个GDT(3) 【综合】2015年08月16日开源javaCMS-FreeCMS2.3留言管理 【数据库】2015年03月17日codeforces#8DTwoFriends二分答案+计算几何 【移动开发】2015年05月19日G1垃圾收集器入门 【数据库】2015年06月01日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)