Android的应用资源

类型及处理方式
  1. 原生资源,存在assets目录下
  2. R访问,res

颜色值:
#RGB
#ARGB(A代表透明度,0~f)
#RRGGBB
#AARRGGBB

dimens.xml 尺寸
< dimen name = “spacing” > 8dp </ dimen >

bools.xml boolean常量
< bool name = "is_male" > true </ bool >

integer.xml 整型常量
< integer name = "my_size" > 32 </ integer >


Array : res/values/arrays.xml
<? xml version = "1.0" encoding = "utf-8" ?>
< resources >
   
< array name = "plain_arr" >
       
< item > @color/c1 </ item >
       
< item > @color/c2 </ item >
       
< item > @color/c3 </ item >
       
< item > @color/c4 </ item >
   
</ array >
   
< string-array name = "string_arr" >
       
< item > @string/s1 </ item >
       
< item > @string/s2 </ item >
       
< item > @string/s3 </ item >
       
< item > @string/s4 </ item >
    </string-array>
   
< string-array name = "books" >
       
< item > Sharp Android </ item >
       
< item > Prime Android </ item >
       
< item > Bravo Android </ item >
    </string-array>
</ resources >

使用:
main.xml中
< ListView
     ...
    
android:entries = “@array/books "
/>

main.java中:
    texts = getResources().getStringArray(R.array.string_arr);

    TypedArray icons = res.obtainTypedArray(R.array.plain_arr);

    text.setBackgroundDrawable(icons.getDrawable(position));



StateListDrawable资源
用于组织多个Drawable对象
定义StateListDrawable对象的XML文件的根元素为<selector.../>,该元素可以包含多个<item.../元素>,可指定如下属性
  • android:color/android:drawable
  • android:state_xxx

< sector
xmlns:android = "http://schemas.android.com/apk/res/android" >
< item android:color = "hex_color"
   
android:state_pressed = [ " true "|" false "] />
</ sector >
StateListDrawable的<item.../>元素所支持的状态有如下几种:


LayerDrawable
LayerDrawable也可以包含一个Drawable数组,系统会按照这些Drawable对象数组顺序来绘制他们,索引最大的位于最上面
xml跟元素为<layer-list.../>可包含:
  • android:drawable
  • android:id
  • android:bottom|top|left|right
     
<? 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:drawabe = "@drawable/grow" />
</ layer-list >


ShapeDrawable 资源
用于定义一个基本的几何图形,XML文件的根元素是<shape.../>元素,该元素可指定如下属性:
android:shape = [ " rectangle ”|” oval ”|” line ”|” ring "]
示例xml代码——my_shape_1.xml
<? 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:left = "7dp"
       
android:right = "7dp"
       
android:top = "7dp"
        android:bottom="7dp"/>
<!—-边角-->
    <corners android:radius="8dp"/> 
</ shape >
main.xml中调用shapeDrawable资源:
   
< TextView
       
android:id = "@+id/tv1"
       
android:layout_width = "wrap_content"
       
android:layout_height = "wrap_content"
       
android:text = "@string/hello_world"
        android:background="@drawable/my_shape_1" />


ClipDrawable资源
代表从其它位图上截取一个“图片片段”。在XML文件中定义ClipDrawable对象使用<clip.../>元素
<? xml version = "1.0" encoding = "utf-8" ?>
< clip xmlns:android = "http://schemas.android.com/apk/res/android"
   
android:drawable = "@drawable/drawable_resource"
   
android:clipOrientation = [ " horizontal "|" vertical "]
   
android:gravity = [ " top "|" bottom "|" left "|" right "|" center_vertical "|" center_vertical "|
    "
fill_vertical "|" center_horizontal "|" fill_horizontal "|
    "center"|"fill"|"clip_vertical"|"clip_horizontal"]    />
三个属性分别代表:截取源Drawable对象;截取方向;截取对齐方式
使用ClipDrawable对象时可调用setLevel(int level)方法来设置截取区域大小,level值0~10000,空~整张


AnimationDrawable
支持逐帧动画和补间动画
以<set.../>元素作为根元素,可指定如下4个元素
  • alpha 透明度
  • scale 缩放改变
  • translate 位移变换
  • rotate 设置图片进行旋转
除具体值外,上述元素还可指定android:interpolator,用于指定动画的变化速度
linear-interpolator
accelerate_interpolator
decelerate_interpolator
若想让加速效果使用相同的动画速度,可指定:
android:shareInterpolator=“true"
示例代码:
my_anim.xml
<? xml version = "1.0" encoding = "utf-8" ?>
< set android:interpolator = "@android:anim/linear_interpolator"
    
xmlns:android = "http://schemas.android.com/apk/res/android"
    
android:duration = "5000" >
    
< scale android:fromXScale = "1.0"
        
android:toXScale = "1.4"
        
android:fromYScale = "1.0"
        
android:toYScale = "0.6"
        
android:pivotX = "50%"
        
android:pivotY = "50%"
        
android:fillAfter = "true"
        
android:duration = "2000"
        
/>
    
< translate android:fromXDelta = "10"
        
android:toXDelta = "130"
        
android:fromYDelta = "30"
        
android:toYDelta = "-80"
        
android:duration = "2000" />
   

</ set >

acitivity_main.java 
public class MainActivity extends ActionBarActivity {

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super .onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main );
       
final ImageView image = (ImageView) findViewById(R.id. imageview );
       
final Animation anim = AnimationUtils.loadAnimation( this ,
        R.anim.
my_anim );
        anim.setFillAfter(
true );
        Button bn = (Button) findViewById(R.id.
bn );
        bn.setOnClickListener(
new OnClickListener()
        {
       
@Override
       
public void onClick(View source)
        {
        image.startAnimation(anim);
        }
        });
    }
}

Property Animation资源
通常使用的是Animator的子类:
AnimatorSet、ValueAnimator、ObjectAnimator、TimeAnimator
<set/>
AnimatorSet
<objectAnimator/>
ObjectAnimator
<animator/>
ValueAnimator
示例代码:
main.java
public class MainActivity extends ActionBarActivity {

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super .onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main );
        RelativeLayout container = (RelativeLayout)
        findViewById(R.id.
container );
        container.addView(
new MyAnimationView( this ));
    }
   
public class MyAnimationView extends View
    {
   
public MyAnimationView(Context context)
    {
   
super (context);
    ObjectAnimator colorAnim = (ObjectAnimator) AnimatorInflater
    .loadAnimator(MainActivity.
this , R.anim. color_anim );
    colorAnim.setEvaluator(
new ArgbEvaluator());
    colorAnim.setTarget(
this );
    colorAnim.start();
    }
    }
}

使用原始XML资源


使用Layout资源


使用Menu资源

Style Theme
Android位于/res/values下,跟元素为<resource.../>,可包含多个<style.../>子元素,每个style定义一个样式
name
parent:继承的父样式
每个style可包含多个item

而主题,
  • 不能作用于单个View组件
  • 定义的格式是改变窗口外观的格式
如果只想要应用程序的某个Activity使用这个主题,只需要在manifest文件中,修改<activity.../>子元素,添加
android:theme=“@style/MyTheme"即可

主题同样支持继承,同样使用parenat=“@android:style/Theme.MyTheme”,继而覆盖部分想修改的属性

Attribute
<resource/>
attr子元素
declare-styleable子元素(每个styleable对象就是一组attr属性的合集)
属性资源文件定义该属性之后,属性资源所定义的属性到底可以发挥什么作用,取决于自定义组件的代码实现


使用原始资源
/res/raw:android会自动管理该目录下的资源,通过R.raw.xxx来进行访问
/assets;通过AssetManager管理该目录下的原始资源
AssetManager提供的方法有:
InputStream open(String fileName)
AssetFileDescriptor openFd(String fileName)
示例代码如下:

public class MainActivity extends ActionBarActivity {

MediaPlayer
mediaPlayer1 = null ;
MediaPlayer
mediaPlayer2 = null ;

@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.
activity_main );
mediaPlayer1 = MediaPlayer.create( this , R.raw. bomb );
AssetManager am = getAssets();
try {
AssetFileDescriptor afd = am.openFd(
"shot.mp3" );
mediaPlayer2 = new MediaPlayer();
mediaPlayer2 .setDataSource(afd.getFileDescriptor());
mediaPlayer2 .prepare();
}
catch (IOException e) {
e.printStackTrace();
}
Button playRaw = (Button) findViewById(R.id.
playRaw );
playRaw.setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View source)
{
mediaPlayer1 .start();
}
});
Button playAsset = (Button) findViewById(R.id.
playAsset );
playAsset.setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View source)
{
mediaPlayer2 .start();
}
});
}
}

国际化和资源自适应
Android非常优秀的解耦合设计,方便了国际化的实现;实际应用在国际化的步骤上是非常简单的
资源自适应也是通过类似思路实现的
drawable-hdpi  drawable-mdpi ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android应用源码是指通过编写代码实现的一个或多个Android应用的全部源代码。源代码是用来描述应用程序的逻辑和功能的文本文件集合,开发者可以通过阅读和修改源代码来理解应用程序的工作原理,或者根据自己的需求进行定制。Android应用源码通常包括XML和Java文件,其中XML文件用于定义应用的界面布局和资源,Java文件则包含应用的逻辑代码和业务逻辑。 通过获取和使用Android应用源码,开发者可以学习和理解Android开发的技术和流程,从而更好地进行应用程序的开发。源码还能帮助开发者解决问题和调试代码,提高开发效率和质量。与此同时,开发者可以根据自己的需求和想法对源码进行修改和扩展,开发出定制化的应用程序,满足特定的业务需求。 获取Android应用源码的方式有多种,一种常用的方法是通过开源项目,例如GitHub上的开源Android应用项目,开发者可以直接下载项目源码,并在自己的开发环境下进行调试和修改。此外,一些优秀的开发教程和书籍也会提供相应的源码下载,帮助开发者更好地学习和理解Android开发。 总之,Android应用源码对于开发者来说是非常重要的资源,它不仅可以帮助开发者学习和理解Android开发的技术和流程,还可以用来解决问题和调试代码,以及进行定制化开发,满足特定的业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值