做安卓开发的,是不是总想把自己的应用做的足够强大,但空间足够小?可以需求方又要求很炫的效果,怎么办?
其实系统自带了很多风格的边框、图标等,而且不同版本之间略有差异,但功能是一样的。我们为什么放着这些现成的资源不用呢?下面就来看看系统都有什么吧。运行下面的例子,可以看到系统中所有drawable资源。
MainActivity.java
package com.jmeditor.sysresbrowser; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public class MainActivity extends Activity { //浏览资源的序号 private static int index = 0; //所有资源列表 private static List<Map<String,Object>> rs; //显示图片的View private ImageView imageView; //显示图片的背景,因为有些只适合在黑背景下显示 private LinearLayout imageBg; //显示数量 private TextView textView; //显示当前图片的ID,方便引用 private TextView tips; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.textView); tips = (TextView)findViewById(R.id.tips); imageView = (ImageView)findViewById(R.id.imageView); imageBg = (LinearLayout)findViewById(R.id.imageBg); Button imageViewBtnPre = (Button)findViewById(R.id.imageViewBtnPre); Button imageViewBtnNext = (Button)findViewById(R.id.imageViewBtnNext); //读取系统所有的drawable资源 try { Class c = Class.forName("android.R$drawable"); Field[] fs = c.getDeclaredFields(); rs = new ArrayList<Map<String,Object>>(); for (Field field : fs) { if (field.getType().getName().equals("int") ) { Map<String,Object> m = new HashMap<String,Object>(); m.put("name", field.getName()); m.put("value", field.get(this)); rs.add(m); } } } catch (Exception e) { e.printStackTrace(); } //上一张 imageViewBtnPre.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { if(index > 0){ index --; showImg(); } } }); //下一张 imageViewBtnNext.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { if(index < rs.size() - 1){ index ++; showImg(); } } }); //背景色 this.findViewById(R.id.bg_1).setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { imageBg.setBackgroundColor(getResources().getColor(R.color.white)); } }); this.findViewById(R.id.bg_2).setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { imageBg.setBackgroundColor(getResources().getColor(R.color.black)); } }); this.findViewById(R.id.bg_3).setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { imageBg.setBackgroundColor(getResources().getColor(R.color.blue)); } }); } private void showImg() { imageView.setBackgroundResource(Integer.valueOf(rs.get(index).get("value").toString())); String s = getResources().getString(R.string.total_msg); textView.setText(s.replaceAll("\\{1\\}", "" + rs.size()).replaceAll("\\{2\\}", "" + (index+1))); tips.setText(rs.get(index).get("name").toString()); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
布局文件activity_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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <LinearLayout android:id="@+id/imageBg" android:layout_width="fill_parent" android:layout_height="100dip" android:padding="5dip"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="20dip"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/tips"/> <TextView android:id="@+id/tips" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/imageViewBtnPre" android:text="@string/pre_img" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/imageViewBtnNext" android:text="@string/next_img" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/background_title"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <View android:id="@+id/bg_1" android:layout_width="50dip" android:layout_height="50dip" android:layout_margin="5dip" android:background="@color/white"/> <View android:id="@+id/bg_2" android:layout_width="50dip" android:layout_height="50dip" android:layout_margin="5dip" android:background="@color/black"/> <View android:id="@+id/bg_3" android:layout_width="50dip" android:layout_height="50dip" android:layout_margin="5dip" android:background="@color/blue"/> </LinearLayout> </LinearLayout>
相关推荐
- **禁用不必要的硬件驱动**:对于不再使用的设备,可以通过设备管理器禁用其驱动程序,避免这些驱动占用系统资源并可能引发的问题。 3. **正确配置BIOS/CMOS设置**:合理设置BIOS/CMOS参数对于确保系统的稳定运行...
"增加C盘空间——WYWZ超强清理" 提供了解决这个问题的一个解决方案。下面将详细探讨如何通过深度清理和优化系统盘来提升电脑性能。 首先,我们需要理解为什么C盘会逐渐填满。这主要是由于以下几个原因: 1. **系统...
《iOS游戏应用源代码解析——基于“pachun-Rocket-Defender”》 iOS游戏开发是移动开发领域中的一个重要分支,它结合了强大的硬件性能和Apple的优雅设计哲学,为开发者提供了丰富的创作空间。本篇文章将深入探讨...
- **可裁剪性**:用户可以根据具体的应用需求选择所需的组件和服务,以减小系统的占用空间。 - **高度可靠**:经过严格测试,具有很高的稳定性和可靠性,适合关键任务系统。 - **广泛的硬件支持**:支持多种处理器...
4. **资源管理**:源代码可能包含资源加载和管理的模块,如图片、音频和纹理的预加载,优化资源的加载速度,减少游戏启动时间和内存占用。 5. **调试工具**:为了便于开发和调试,CCKit可能还包含了日志记录和性能...
它们通常在程序结束时被删除,避免占用不必要的磁盘空间。在iOS中,开发者可以使用`NSTemporaryDirectory()`获取临时文件夹路径,以此来创建和管理临时文件。 2. **读写文件**: 在iOS中,读写文件主要通过...
此外,它们在风险、安全性和合规性管理方面发挥关键作用,同时在扩大规模时还能够减少能源消耗、占用空间和人力资源需求。 智慧系统在现实世界中的应用: 智慧系统的概念已应用于现实世界中的多个领域。比如智慧...
在iOS应用开发中,PVR纹理加载器(PVRTextureLoader)是用于处理PVRTC(PowerVR Texture Compression)格式纹理的工具。...同时,这也有助于理解iOS系统如何优化资源使用,为未来的优化工作打下基础。
然而,这种方法占用了一定量的内存资源,对于内存有限的嵌入式设备来说,这意味着可用的内存资源减少。例如,如果一个8MB的Flash中存放了经过50%压缩的执行环境,解压缩后需要16MB的RAMDISK空间。这不仅消耗了内存,...
这包括减少内存占用,优化绘制速度,以及合理利用后台服务。 以上就是基于Wear OS开发记事本应用的一些核心知识点,这些技术和实践将帮助开发者创建出既实用又高效的智能手表应用。在实际项目中,开发者还需要不断...
微软影子系统是一种高效、轻量级的系统保护工具,旨在为用户提供安全的计算机环境,防止恶意软件、病毒以及意外更改导致的系统...同时,其小巧的体积和高效的运行方式,使其成为对系统资源要求较高的用户的理想选择。
【系统稳定性——OutOfMemoryError常见原因及解决方法】 在Java应用程序中,系统稳定性的一个关键因素是避免出现`OutOfMemoryError`。这种错误通常表明JVM(Java虚拟机)的内存资源已经耗尽,无法继续正常运行。...
3. **启动优化**:部分应用设置为开机自启动,长期占用系统资源。安全卫士能识别并管理这些自启应用,让用户可以选择性地禁用它们,减少不必要的启动负担。 4. **文件整理**:乱七八糟的文件会占用大量存储空间,...
例如,使用延迟绑定可以减少程序启动时的内存占用,优化资源管理可以减少不必要的内存分配,而使用本地方法(Interop服务)可以调用原生代码,提升特定操作的性能。 在数据库集成方面,.NET Compact Framework支持...
视频可能涵盖了如何通过合理使用资源、减少内存占用、优化代码执行速度等方式来提升应用性能。 4. **数据库支持**:移动应用通常需要处理数据存储,.NET Compact Framework提供了对SQL Server CE的支持,让开发者...
Report Tool 3.2.4 能够识别出占用空间大的音频资源,考虑是否可以进行压缩或减小质量。 4. **脚本和逻辑**:过多或过于复杂的脚本可能会增加内存占用和CPU负担。插件可以分析脚本的大小,帮助优化代码结构。 5. *...
通过阅读和研究源代码,我们可以学习如何有效地处理图像资源,以及如何利用iOS系统提供的图形工具来实现复杂的图像操作,比如精灵动画。同时,这也是一个了解和实践Objective-C或Swift编程语言的好机会,因为这些...
【系统稳定性——StackOverFlowError常见原因及解决方法】 在Java编程中,系统稳定性是至关重要的,而StackOverflowError是一个常见的运行时错误,通常由于内存管理问题导致。本篇文章将详细探讨StackOverflowError...