ClipDrawable的用法(图片切割效果)
2015-01-22 13:52
239 查看
android:clipOrientation有两个属性,默认为horizontal
android:gravity有两个属性,默认为left
ClipDrawable代表从其它位图上截取一个“图片片段”。在XML文件中使用<clip.../>元素定义ClipDrawable对象,可指定如下三个属性:
android:drawable:指定截取的源Drawable对象
android:clipOrientation:指定截取的方向,可设置为水平截取或垂直截取
android:gravity:指定截取时的对齐方式
android:clipOrientation 和android:gravity 是相对应的例如:
当我们用vertical的时候gravity的属性可以设置为top 或bottom 这样图片就可以从顶部向下展开或者从底部向上展开
同样horizontal的时候 gravity的属性可以设置为left或right这样图片就可以从左向右展开或者从又向左展开
但是值得注意的是android:clipOrientation 的属性为horizontal的时候
grivaty的属性top和bottom 是失效的不会从上向下展开也不会从下向上展开会默认从中间向两边展开
同样android:clipOrientation 的属性为vertical的时候
grivaty的属性left和right也是这样的
上代码
自定义drawable 设置ClipDrawable属性 引用一张你想要切割的图片
<? xml version ="1.0" encoding= "utf-8" ?>
< clip xmlns:android ="http://schemas.android.com/apk/res/android"
android:clipOrientation ="horizontal"
android:drawable ="@drawable/clip_pic"
android:gravity ="right" >
</ clip>
界面布局:
<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"
tools:context=".MainActivity"
4000
>
<ImageView
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/clip" />
</LinearLayout>
代码实现
[align=left] private ImageView view ;[/align]
[align=left]
[/align]
[align=left] @Override[/align]
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated
method stub
[align=left] super .onCreate(savedInstanceState );[/align]
[align=left] setContentView(R.layout. activity_main );[/align]
view =
(ImageView)findViewById(R.id. view);
[align=left] // 获取图片所显示的ClipDrawable对象[/align]
final ClipDrawable drawable =
(ClipDrawable) view .getDrawable();
final Handler handler = new Handle r()
{
[align=left] @Override[/align]
public void handleMessage(Message msg)
{
[align=left] // 如果消息是本程序发送的[/align]
if (msg .what ==
0x123) {
[align=left] // 修改ClipDrawable的level值[/align]
drawable .setLevel(drawable .getLevel()
+ 200);
[align=left] }[/align]
[align=left] }[/align]
[align=left] };[/align]
[align=left] final Timer timer = new Timer();[/align]
timer .schedule( new TimerTask()
{
[align=left] @Override[/align]
public void run()
{
[align=left] Message msg = new Message();[/align]
msg .what =
0x123;
[align=left] // 发送消息,通知应用修改ClipDrawable的level的值[/align]
[align=left] handler .sendMessage(msg );[/align]
[align=left] // 取消定时器[/align]
if (drawable .getLevel()
>= 10000) {
timer .cancel();
[align=left] }[/align]
[align=left] }[/align]
[align=left] }, 0, 300);[/align]
[align=left] }[/align]
预期效果(从右向左)
android:gravity有两个属性,默认为left
ClipDrawable代表从其它位图上截取一个“图片片段”。在XML文件中使用<clip.../>元素定义ClipDrawable对象,可指定如下三个属性:
android:drawable:指定截取的源Drawable对象
android:clipOrientation:指定截取的方向,可设置为水平截取或垂直截取
android:gravity:指定截取时的对齐方式
android:clipOrientation 和android:gravity 是相对应的例如:
当我们用vertical的时候gravity的属性可以设置为top 或bottom 这样图片就可以从顶部向下展开或者从底部向上展开
同样horizontal的时候 gravity的属性可以设置为left或right这样图片就可以从左向右展开或者从又向左展开
但是值得注意的是android:clipOrientation 的属性为horizontal的时候
grivaty的属性top和bottom 是失效的不会从上向下展开也不会从下向上展开会默认从中间向两边展开
同样android:clipOrientation 的属性为vertical的时候
grivaty的属性left和right也是这样的
上代码
自定义drawable 设置ClipDrawable属性 引用一张你想要切割的图片
<? xml version ="1.0" encoding= "utf-8" ?>
< clip xmlns:android ="http://schemas.android.com/apk/res/android"
android:clipOrientation ="horizontal"
android:drawable ="@drawable/clip_pic"
android:gravity ="right" >
</ clip>
界面布局:
<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"
tools:context=".MainActivity"
4000
>
<ImageView
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/clip" />
</LinearLayout>
代码实现
[align=left] private ImageView view ;[/align]
[align=left]
[/align]
[align=left] @Override[/align]
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated
method stub
[align=left] super .onCreate(savedInstanceState );[/align]
[align=left] setContentView(R.layout. activity_main );[/align]
view =
(ImageView)findViewById(R.id. view);
[align=left] // 获取图片所显示的ClipDrawable对象[/align]
final ClipDrawable drawable =
(ClipDrawable) view .getDrawable();
final Handler handler = new Handle r()
{
[align=left] @Override[/align]
public void handleMessage(Message msg)
{
[align=left] // 如果消息是本程序发送的[/align]
if (msg .what ==
0x123) {
[align=left] // 修改ClipDrawable的level值[/align]
drawable .setLevel(drawable .getLevel()
+ 200);
[align=left] }[/align]
[align=left] }[/align]
[align=left] };[/align]
[align=left] final Timer timer = new Timer();[/align]
timer .schedule( new TimerTask()
{
[align=left] @Override[/align]
public void run()
{
[align=left] Message msg = new Message();[/align]
msg .what =
0x123;
[align=left] // 发送消息,通知应用修改ClipDrawable的level的值[/align]
[align=left] handler .sendMessage(msg );[/align]
[align=left] // 取消定时器[/align]
if (drawable .getLevel()
>= 10000) {
timer .cancel();
[align=left] }[/align]
[align=left] }[/align]
[align=left] }, 0, 300);[/align]
[align=left] }[/align]
预期效果(从右向左)
相关文章推荐
- android 使用clip.xml 作为drawable 作成进度条图片效果
- ClipDrawable的使用,图片的徐徐展开效果
- ClipDrawable制作图片渐进效果
- 使用TransitionDrawable实现两张图片的过渡效果
- JavaScript 图片切割效果
- JS 滤镜切割图片效果。
- JavaScript 图片切割效果(带拖放、缩放效果)[转/改]
- JavaScript 图片切割效果(带拖放、缩放效果)
- JavaScript 图片切割效果
- JavaScript 图片切割效果(带拖放,缩放效果)
- JavaScript 图片切割效果
- JavaScript 图片切割效果
- JavaScript 图片切割效果
- jQuery插件,图片切割效果,配合PHP可以实现图片切割和调整尺寸
- 使用TransitionDrawable实现两张图片的过渡效果
- JavaScript 图片切割效果
- JavaScript 图片切割效果(带拖放,缩放效果)
- javascript图片切割效果(带拖放、缩放效果)
- JavaScript 图片切割效果(带拖放、缩放效果)
- 图片切割效果