当前位置: 首页 > 编程日记 > 正文

Android Layer List 使用实现实例

Layer List是Anroid中的一种图形的方式,它是通过叠加若干张图片的方式来形成最终的图片,最终的图片在代码中表现为一个LayerDrawable对象。

效果图:第一张是默认显示,第二张为按改变按钮后的图

              

下面通过一个实例来说明:

新建一个Android工程,目录结构如下:

主界面activity_main.xml文件如下

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2. xmlns:tools="http://schemas.android.com/tools"  
  3. android:layout_width="match_parent"  
  4. android:layout_height="match_parent"  
  5. >  
  6. <ImageView   
  7. android:id="@+id/show_img"  
  8. android:layout_width="wrap_content"  
  9. android:layout_height="wrap_content"  
  10. android:layout_alignParentTop="true"  
  11. android:src="@drawable/layerlist"  
  12. android:contentDescription="@string/app_name"/>  
  13. <Button   
  14. android:layout_width="wrap_content"  
  15. android:layout_height="wrap_content"  
  16. android:text="@string/button_text"  
  17. android:layout_alignParentBottom="true"  
  18. android:layout_centerHorizontal="true"  
  19. android:onClick="change"  
  20. android:layout_marginBottom="20dp"/>  
  21. </RelativeLayout>  

在res目录的drawable文件中建立一个layterlist.xml文件,如下所示:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >  
  3. <item android:drawable="@drawable/background"></item>  
  4. <item android:id="@+id/inside_img" android:drawable="@drawable/head"  
  5. android:left="80dp" android:right="80dp" android:top="50dp" android:bottom="50dp"></item>  
  6. </layer-list>  


MainActivity.java文件如下所示:

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. package com.shen.layerlist;  
  2. import android.app.Activity;  
  3. import android.graphics.drawable.LayerDrawable;  
  4. import android.os.Bundle;  
  5. import android.view.Menu;  
  6. import android.view.MenuItem;  
  7. import android.view.View;  
  8. import android.widget.ImageView;  
  9. public class MainActivity extends Activity {  
  10. private ImageView imageView;  
  11. private int num = 0;  
  12. @Override  
  13. protected void onCreate(Bundle savedInstanceState) {  
  14. super.onCreate(savedInstanceState);  
  15. setContentView(R.layout.activity_main);
  16. //实例化ImageView控件  
  17. imageView = (ImageView) findViewById(R.id.show_img);
  18. }
  19. @Override  
  20. public boolean onCreateOptionsMenu(Menu menu) {  
  21. // Inflate the menu; this adds items to the action bar if it is present.  
  22. getMenuInflater().inflate(R.menu.main, menu);
  23. return true;  
  24. }
  25. @Override  
  26. public boolean onOptionsItemSelected(MenuItem item) {  
  27. // Handle action bar item clicks here. The action bar will  
  28. // automatically handle clicks on the Home/Up button, so long  
  29. // as you specify a parent activity in AndroidManifest.xml.  
  30. int id = item.getItemId();  
  31. if (id == R.id.action_settings) {  
  32. return true;  
  33. }
  34. return super.onOptionsItemSelected(item);  
  35. }
  36. /** 
  37.      * 按钮点击事件 
  38.      * @param v 
  39.      */  
  40. public void change(View v)  
  41. {
  42. //获得我们合成的图片  
  43. LayerDrawable layerDrawable = (LayerDrawable) getResources().getDrawable(R.drawable.layerlist);
  44. //替换合成图片中内容  
  45. layerDrawable.setDrawableByLayerId(R.id.inside_img, getResources().getDrawable(getDrawableId()));
  46. //显示更改后的效果  
  47. imageView.setImageDrawable(layerDrawable);
  48. //增加来显示不同的图片  
  49. num ++;
  50. }
  51. private int getDrawableId()  
  52. {
  53. switch (num%2) {  
  54. case 0:  
  55. return R.drawable.mouse;  
  56. case 1:  
  57. return R.drawable.head;  
  58. default:  
  59. break;  
  60. }
  61. return R.drawable.head;  
  62. }
  63. }

最后,附加用到的图片:

                                                   

项目源码  http://download.csdn.net/detail/cqtddt/8281275

Layer List是Anroid中的一种图形的方式,它是通过叠加若干张图片的方式来形成最终的图片,最终的图片在代码中表现为一个LayerDrawable对象。

效果图:第一张是默认显示,第二张为按改变按钮后的图

              

下面通过一个实例来说明:

新建一个Android工程,目录结构如下:

主界面activity_main.xml文件如下

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2. xmlns:tools="http://schemas.android.com/tools"  
  3. android:layout_width="match_parent"  
  4. android:layout_height="match_parent"  
  5. >  
  6. <ImageView   
  7. android:id="@+id/show_img"  
  8. android:layout_width="wrap_content"  
  9. android:layout_height="wrap_content"  
  10. android:layout_alignParentTop="true"  
  11. android:src="@drawable/layerlist"  
  12. android:contentDescription="@string/app_name"/>  
  13. <Button   
  14. android:layout_width="wrap_content"  
  15. android:layout_height="wrap_content"  
  16. android:text="@string/button_text"  
  17. android:layout_alignParentBottom="true"  
  18. android:layout_centerHorizontal="true"  
  19. android:onClick="change"  
  20. android:layout_marginBottom="20dp"/>  
  21. </RelativeLayout>  

在res目录的drawable文件中建立一个layterlist.xml文件,如下所示:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >  
  3. <item android:drawable="@drawable/background"></item>  
  4. <item android:id="@+id/inside_img" android:drawable="@drawable/head"  
  5. android:left="80dp" android:right="80dp" android:top="50dp" android:bottom="50dp"></item>  
  6. </layer-list>  


MainActivity.java文件如下所示:

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. package com.shen.layerlist;  
  2. import android.app.Activity;  
  3. import android.graphics.drawable.LayerDrawable;  
  4. import android.os.Bundle;  
  5. import android.view.Menu;  
  6. import android.view.MenuItem;  
  7. import android.view.View;  
  8. import android.widget.ImageView;  
  9. public class MainActivity extends Activity {  
  10. private ImageView imageView;  
  11. private int num = 0;  
  12. @Override  
  13. protected void onCreate(Bundle savedInstanceState) {  
  14. super.onCreate(savedInstanceState);  
  15. setContentView(R.layout.activity_main);
  16. //实例化ImageView控件  
  17. imageView = (ImageView) findViewById(R.id.show_img);
  18. }
  19. @Override  
  20. public boolean onCreateOptionsMenu(Menu menu) {  
  21. // Inflate the menu; this adds items to the action bar if it is present.  
  22. getMenuInflater().inflate(R.menu.main, menu);
  23. return true;  
  24. }
  25. @Override  
  26. public boolean onOptionsItemSelected(MenuItem item) {  
  27. // Handle action bar item clicks here. The action bar will  
  28. // automatically handle clicks on the Home/Up button, so long  
  29. // as you specify a parent activity in AndroidManifest.xml.  
  30. int id = item.getItemId();  
  31. if (id == R.id.action_settings) {  
  32. return true;  
  33. }
  34. return super.onOptionsItemSelected(item);  
  35. }
  36. /** 
  37.      * 按钮点击事件 
  38.      * @param v 
  39.      */  
  40. public void change(View v)  
  41. {
  42. //获得我们合成的图片  
  43. LayerDrawable layerDrawable = (LayerDrawable) getResources().getDrawable(R.drawable.layerlist);
  44. //替换合成图片中内容  
  45. layerDrawable.setDrawableByLayerId(R.id.inside_img, getResources().getDrawable(getDrawableId()));
  46. //显示更改后的效果  
  47. imageView.setImageDrawable(layerDrawable);
  48. //增加来显示不同的图片  
  49. num ++;
  50. }
  51. private int getDrawableId()  
  52. {
  53. switch (num%2) {  
  54. case 0:  
  55. return R.drawable.mouse;  
  56. case 1:  
  57. return R.drawable.head;  
  58. default:  
  59. break;  
  60. }
  61. return R.drawable.head;  
  62. }
  63. }

最后,附加用到的图片:

                                                   

项目源码  http://download.csdn.net/detail/cqtddt/8281275

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/4204340.html

相关文章:

Promise - js异步控制神器

微信小程序开发交流qq群 581478349 承接微信小程序开发。扫码加微信。 正文&#xff1a; 首先给来一个简单的demo看看Promise是怎么使用的&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><script type"text/ja…

lab_2 Selenium

1、安装SeleniumIDE插件 添加组件-搜索Selenium IDE 安装后重启浏览器可以看到工具中存在此IDE 2、学会使用SeleniumIDE录制脚本和导出脚本 工具--Selenium IDE&#xff0c;得到界面如图 以百度搜索天津大学为例&#xff0c;如下图 红色的是录制按钮&#xff0c;base url是当前…

android进度指示器_等待的痛苦—浏览进度指示器地狱的7个级别

android进度指示器by Mike Zetlow由Mike Zetlow 等待的痛苦—浏览进度指示器地狱的7个级别 (The Pain of Waiting — Navigating the 7 Levels of Progress Indicator Hell) How much hell are you willing to put your users through?您愿意让用户承受多少痛苦&#xff1f; …

Oracle基础 动态SQL语句

一、静态SQL和动态SQL的概念。 1、静态SQL 静态SQL是我们常用的使用SQL语句的方式&#xff0c;就是编写PL/SQL时&#xff0c;SQL语句已经编写好了。因为静态SQL是在编写程序时就确定了&#xff0c;我们只能使用SQL中的DML和事务控制语句&#xff0c;但是DDL语句&#xff0c;以及…

dataTables常用参数

一、新版本和老版本的区别 新版本的改进&#xff1a;https://datatables.net/new/1.10 新老版本参数变化列表&#xff1a;http://datatables.club/upgrade/1.10-convert.html 老版本参数列表&#xff1a; http://legacy.datatables.net/usage/features http://legacy.datatable…

[微信小程序]获取用户当前的城市

有问题可以扫码加我微信&#xff0c;有偿解决问题。承接小程序开发。 微信小程序开发交流qq群 173683895 、 526474645 &#xff1b; 正文&#xff1a; // 获取用户当前位置的名称和城市 util.jsfunction location() {// 实例化腾讯位置服务里面微信小程序JS SDK的API核心…

构建一个react项目_您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩。...

构建一个react项目by Samer Buna通过Samer Buna 您想要了解更多有关React的内容吗&#xff1f; 让我们构建一个游戏&#xff0c;然后玩。 (Do you want to learn more about React? Let’s build — and then play — a game.) Update: This article is now part of my book …

vijos 1476 旅游规划题解

题目链接&#xff1a;https://vijos.org/p/1476 解&#xff1a;因为这一定是一棵树&#xff0c;所以我们多画几次图&#xff0c;就会发现所有的最长路径中心点都一样&#xff0c;且中心点把这条最长路径分成两段等长的路。 那么做法就很简单啦&#xff0c;先求出图的最长路径长…

JQ实现导航效果(附效果图)

微信小程序开发交流qq群 581478349 承接微信小程序开发。扫码加微信。 正文&#xff1a; 为了不浪费大家时间, 首先来一张效果图看是不是你需要的 下面是完整的代码和详细的注释. 直接copy就可以用了. html <div id"tab" class"tab"><div…

.NET如何从配置文件中获取连接字符串

一.设置配置文件 <configuration><!--在configuration下创建一个connectionStrings--><connectionStrings><!--以类似键值对的形式&#xff0c;设置好名字和连接字符串--><add name"连接名" connectionString"连接字符串"/>…

javascript 代码_如何使您JavaScript代码保持简单并提高其可读性

javascript 代码by Leonardo Lima莱昂纳多利马(Leonardo Lima) 如何使您JavaScript代码保持简单并提高其可读性 (How to keep your JavaScript code simple and increase its readability) After a few years working almost exclusively with Ruby on Rails and some jQuery,…

《转》Python学习(14)-对文件的操作(一)

转自 http://www.cnblogs.com/BeginMan/p/3166644.html 一、文件对象 我理解的文件对象就是一个接口&#xff0c;通过这个接口对文件进行相关操作。 《Python 核心编程》上说的很晦涩&#xff0c;这里没有深刻理解到&#xff0c;希望有人能解释给我听。 >>> f open(d…

[微信小程序]组件化开发,以一个自定义模块框组件当做示例(附完整示例代码和效果图)

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; 自定义组件我把它分为简单的三个步骤, 1.创建组件 --- 2.编写组件 --- 3.调用,使用组件. 第一步:创建组件 创建一个modal文件夹,里面包含 josn.wxml.wcss.js 四个文件,然后在jo…

openstack安装在虚拟机上重启之后无法启动问题

http://www.byywee.com/page/M0/S931/931767.html 运行rejoin-stack.sh脚本的核心&#xff1a; exec screen -c $TOP_DIR/stack-screenrc stack-screenrc文件存储启动的信息&#xff1a; 例如trove的启动 screen -t tr-api bash stuff "/usr/local/bin/trove-api --config…

让我们讨论一下变量,以及为什么要在JavaScript中使用它们。

by Zell Liew由Zell Liew 让我们讨论一下变量&#xff0c;以及为什么要在JavaScript中使用它们。 (Let’s talk about variables — and why you should use them in JavaScript.) The main purpose of coding is to solve problems. For example, what happens when you clic…

Services(服务)

开启服务有两种方式&#xff1a; 如果不会可以看老师的百度音乐盒的案例1、start方式&#xff1a;start方式的生命周期&#xff1a;*服务只会被开启一次&#xff0c;直到用户手动停止 服务才会被销毁*开启需要调用startService 会执行onCreate(),onStartCommand() *注&…

[敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum

[敏捷开发实践]&#xff08;2&#xff09; 用于开发和维持复杂产品的敏捷开发框架Scrum 1&#xff0c;Scrum概述 上篇中提到敏捷开发有两种主流的方法&#xff0c;一个是XP&#xff0c;另一个是Scrum&#xff0c;本篇简要介绍Scrum方法。Scrum是一套开发和维护复杂产品的框架或…

js 实现多选框(复选框) 和单选框,下拉框功能完整示例代码附效果图

<!DOCTYPE html> <html><head><meta charset"utf-8" /><script src"http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script><title>单选框,复选框,下拉菜单简单示例</title></head…

ruby on rails_我成为了Ruby on Rails和React的贡献者,你也可以

ruby on railsI am really grateful to have contributed to a few open source projects, including two I currently use on a regular basis: Ruby on Rails and React.我非常感谢为一些开源项目做出了贡献&#xff0c;其中包括我目前定期使用的两个项目&#xff1a; Ruby o…

MySQL加密算法

1.不可逆加密&#xff1a; PASSWORD()&#xff0c;ENCRYPT(&#xff0c;)&#xff0c;MD5()&#xff0c;SHA5()。 2.可逆的加密算法&#xff1a; ENCODE(,) DECODE(,)&#xff1a;加密解密字符串。该函数有两个参数&#xff1a;被加密或解密的字符串和作为加密或解密基础的密…

js回调函数和函数带参数的使用示例

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 //demo1 <html><head><meta charset"UTF-8"><script src"http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script></head>&…

mvc-3模型和数据(1)

MVC和命名空间 var User function(atts) {this.attribute atts || {}; } //和具体user相关的方法 User.prototype.destroy function() {}; //和具体user不相关的函数和变量 User.fetchRemove function() {}; var user new User({name:jinks}); user.destroy();构建对象关系…

初步了解:使用JavaScript进行表达式(De Do Do Do,De Da Da Da)

by Donavon West由Donavon West 初步了解&#xff1a;使用JavaScript进行表达式(De Do Do Do&#xff0c;De Da Da Da) (A first look: do expressions in JavaScript (De Do Do Do, De Da Da Da)) This article is not about about the The Police’s 1980 hit song from alb…

div 下 的img水平居中

设置text-align:center; 这个div必须要设置宽度&#xff1b; 如&#xff1a;{text-align:center; width:100%;}转载于:https://www.cnblogs.com/zzd0916/p/6626772.html

Understanding SOAP

Understanding SOAP转载于:https://www.cnblogs.com/daishuguang/p/4227983.html

js删除组数中的某一个元素(完整代码附效果图)

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; <view class"big-logos"> <imagebindtap"addimg"src../../../image/s.png></image> <blockwx:for"{{img_arr}}"wx:key"in…

c专家编程/c陷阱_如何避免常见的初学者陷阱并像专家一样开始编码

c专家编程/c陷阱by Dmitri Grabov德米特里格拉波夫(Dmitri Grabov) 如何避免常见的初学者陷阱并像专家一样开始编码 (How to avoid common beginner pitfalls and start coding like a pro) Learning to code is tough. We’ve all encountered cryptic errors and code break…

xmpp关于后台挂起的消息接收,后台消息推送,本地发送通知

想问下&#xff0c;在xmpp即时通讯的项目中&#xff0c;我程序如果挂起了&#xff0c;后台有消息过来&#xff0c;我这边的推送不过来&#xff0c;所以我的通知就会收不到消息&#xff0c;当我重新唤醒应用的时候&#xff0c;他才会接收到通知&#xff0c;消息就会推送过来&…

[冲昏头脑]IDEA中的maven项目中学习log4j的日志操作

第一&#xff0c;你要有log4j的对应的包&#xff0c;由于我用的maven&#xff0c;所以直接在pom.xml文件依赖下载则可&#xff0c;如你尚为有此包&#xff0c;请自行百度下载导入&#xff0c;或上http://www.mvnrepository.com/搜索。上如则是我的log4j的包的版本。好了&#x…

女神推荐, 卡片,广告图 ,点击查看更多

微信小程序开发交流qq群 581478349 承接微信小程序开发。扫码加微信。 正文&#xff1a; <view><view classtitle>女神推荐 </view> <image stylemargin-top:25rpx; classtab_img src{{img list_data.q1[1].image}}></image><view classv…