MRC -> ARC :-fobjc -arc
ARC -> MRC :-fno -objc -arc
ShapeDrawable的使用
textview设置渐变色,背景填充色,边框,等统统搞定。
效果图:
下面是依次定义的shape资源的.xml文件:
1:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- 设置填充颜色 -->
<solid android:color="#ff0033" />
<!-- 设置四周的内边距 -->
<padding
android:bottom="20dp"
android:left="20dp"
android:right="20dp"
android:top="20dp" />
<!-- 设置变框 -->
<stroke
android:width="1dip"
android:color="#ff0" />
</shape>
2:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 定义填充渐变颜色 -->
<gradient android:startColor="#ffff0000"
android:endColor="#80ff00ff"
android:angle="45"
android:type="linear"/>
<!-- 设置四周的内边距 -->
<padding
android:bottom="20dp"
android:left="20dp"
android:right="20dp"
android:top="20dp" />
<!-- 设置圆角矩形 -->
<corners android:radius="10dp"/>
</shape>
3:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<!-- 定义填充渐变颜色 -->
<gradient android:startColor="#ff0"
android:endColor="#00f"
android:angle="45"
android:type="sweep"/>
<!-- 设置四周的内边距 -->
<padding
android:bottom="20dp"
android:left="20dp"
android:right="20dp"
android:top="20dp" />
<!-- 设置圆角矩形 -->
<corners android:radius="10dp"/>
</shape>
4:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- 设置填充颜色 -->
<solid android:color="#ff0033" />
<!-- 设置变框 -->
<stroke
android:width="1dip"
android:color="#ff0" />
<corners
android:topLeftRadius="10px"
android:topRightRadius="35px"
android:bottomLeftRadius="50px"
android:bottomRightRadius="80px"/>
</shape>
下面是布局layout中的使用:
<LinearLayout 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"
android:orientation="vertical" >
<TextView
android:layout_margin="20dp"
android:background="@drawable/shape_style1"
android:id="@+id/shape_tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<TextView
android:layout_margin="20dp"
android:background="@drawable/shape_style2"
android:id="@+id/shape_tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<TextView
android:layout_margin="20dp"
android:background="@drawable/shape_style3"
android:id="@+id/shape_tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<TextView
android:padding="20dp"
android:layout_margin="20dp"
android:background="@drawable/shape_style4"
android:id="@+id/shape_tv4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</LinearLayout>
源码下载
MainActivity如下:
package cc.testlayerdrawable; import android.os.Bundle; import android.widget.ImageView; import android.app.Activity; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; /** * Demo描述: * LayerDrawable使用示例 * 1 改变SeekBar的外观 * 2 利用LayerDrawable使ImageView一次加载多张图片 * 2.1 xml方式实现 * 2.2 代码方式实现 * * 示例备注: * 使用LayerDrawable时系统将会按这些Drawable对象的数组顺序来绘制它们 * 索引最大的Drawable对象将会被绘制在最上面.这一点在采用代码实现 * LayerDrawable的时候得以很好的体现.可见参考资料2. * * 参考资料 * 1 Android疯狂讲义(第二版) 作者李刚 * 2 http://wang-peng1.iteye.com/blog/657275 * 3 http://blog.csdn.net/lee576/article/details/7825930 * Thank you very much * */ public class MainActivity extends Activity { private ImageView mImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } //利用LayerDrawable(代码)使ImageView一次加载多张图片 private void init(){ mImageView=(ImageView) findViewById(R.id.imageView); Drawable [] drawables=new Drawable[2]; drawables[0]=getResources().getDrawable(R.drawable.e); drawables[1]=getResources().getDrawable(R.drawable.ic_launcher); LayerDrawable layerDrawable=new LayerDrawable(drawables); mImageView.setImageDrawable(layerDrawable); } }
main.xml如下:
<LinearLayout 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" android:orientation="vertical" > <SeekBar android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progressDrawable="@drawable/seekbarlayer"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="/blog_article/@drawable/imageviewlayer/index.html" /> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
imageviewlayer.xml如下:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <bitmap android:src="/blog_article/@drawable/e/index.html" android:gravity="center"/> </item> <item android:top="25dp" android:left="25dp"> <bitmap android:src="/blog_article/@drawable/ic_launcher/index.html" android:gravity="center"/> </item> <item android:top="60dp" android:left="55dp"> <bitmap android:src="/blog_article/@drawable/ic_launcher/index.html" android:gravity="center"/> </item> </layer-list>
seekbarlayer.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 定义轨道的背景 --> <item android:id="@android:id/background" android:drawable="@drawable/e" /> <!-- 定义轨道上已完成部分的外观--> <item android:id="@android:id/progress" android:drawable="@drawable/ic_launcher" /> </layer-list>