Android

来源:互联网 发布:淘宝魔镜软件管用吗 编辑:程序博客网 时间:2024/06/06 00:25

推荐阅读:Android studio的文件创建

res/anim:定义补间动画
res/animator:定义属性动画
res/drawable目录下:可定义帧动画、shape、selector、和图片
res/values目录下:可创建

arrays(字符串数组)、attrs(自定义view的属性)、colors(颜色)、demens(尺寸)、strings(字符串)、styles(主题或布局参数)。

res/menu:定义菜单
res/raw:存放音乐、视频等
assets:注意不在res目录下,且与java、res、manifests同等级。

这里写图片描述

这里写图片描述

动画的定义

推荐阅读: 属性动画

1、res/anim:补间动画

1、定义:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <scale        android:fromXScale="1.0"        android:toXScale="0.5"        android:fromYScale="1.0"        android:toYScale="0.5"        android:pivotX="50%"        android:pivotY="50%"        android:duration="500" />    <alpha        android:interpolator="@android:anim/accelerate_interpolator"        android:fromAlpha="1.0"        android:toAlpha="0.0"        android:duration="500" /></set>

这里写图片描述

2、引用:

Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim);tv.setAnimation(animation);

2、res/drawable:帧动画

1、定义

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"    android:oneshot="true">    <item        android:drawable="@mipmap/pull_end_image_frame_01"        android:duration="100" />    <item        android:drawable="@mipmap/pull_end_image_frame_02"        android:duration="100" />    <item        android:drawable="@mipmap/pull_end_image_frame_03"        android:duration="100" />    <item        android:drawable="@mipmap/pull_end_image_frame_04"        android:duration="100" />    <item        android:drawable="@mipmap/pull_end_image_frame_05"        android:duration="100" /></animation-list>

这里写图片描述

2、引用

/*  res/drawable 目录下的帧动画  */tv.setBackgroundResource(R.drawable.animation_refresh_second);AnimationDrawable animationDrawable = (AnimationDrawable) tv.getBackground();animationDrawable.start();//开始播放if (animationDrawable != null && animationDrawable.isRunning()) {   animationDrawable.stop(); //停止播放}

3、res/animator : 属性动画

1、定义

<set xmlns:android="http://schemas.android.com/apk/res/android"    android:ordering="sequentially">    <objectAnimator        android:duration="2000"        android:propertyName="translationX"        android:valueFrom="-500"        android:valueTo="0"        android:valueType="floatType" />    <set android:ordering="together">        <objectAnimator            android:duration="3000"            android:propertyName="rotation"            android:valueFrom="0"            android:valueTo="360"            android:valueType="floatType" />        <set android:ordering="sequentially">            <objectAnimator                android:duration="1500"                android:propertyName="alpha"                android:valueFrom="1"                android:valueTo="0"                android:valueType="floatType" />            <objectAnimator                android:duration="1500"                android:propertyName="alpha"                android:valueFrom="0"                android:valueTo="1"                android:valueType="floatType" />        </set>    </set></set> 

这里写图片描述

2、使用

       Animator animator = AnimatorInflater.loadAnimator(this, R.animator.animator);        animator.setTarget(tv);        animator.start();

属性动画一般在代码中设置,如下:

        AnimatorSet set = new AnimatorSet();        //平移        ObjectAnimator anim1 = ObjectAnimator.ofFloat(tv, "translationX", -500f, 0f);        anim1.setDuration(2000);        ObjectAnimator anim2 = ObjectAnimator.ofFloat(tv, "translationY", 0f, -500f);        anim2.setDuration(2000);        //透明度        ObjectAnimator anim3 = ObjectAnimator.ofFloat(tv, "alpha", 1f, 0f);//逐渐消失        anim3.setDuration(2000);        //旋转        ObjectAnimator anim4 = ObjectAnimator.ofFloat(tv, "rotationX", 180f, 0f);        anim4.setDuration(2000);        ObjectAnimator anim5 = ObjectAnimator.ofFloat(tv, "rotationY", 0f, 180f);        anim5.setDuration(2000);        //缩放        ObjectAnimator anim6 = ObjectAnimator.ofFloat(tv, "scaleX", 0.5f);//x轴缩小一半        anim6.setDuration(1000);        ObjectAnimator anim7 = ObjectAnimator.ofFloat(tv, "scaleY", 0.5f);//y轴缩小一半        anim7.setDuration(1000);        set.play(anim1).before(anim2);        set.play(anim3).before(anim4);        set.play(anim5).before(anim6);        set.play(anim1).before(anim7);        set.start();

res/value/XXX

1、res/value/arrays:字符串数组

推荐阅读:Android:entries的使用

1、定义

<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="week_day">        <item>周日</item>        <item>周一</item>        <item>周二</item>        <item>周三</item>        <item>周四</item>        <item>周五</item>        <item>周六</item>    </string-array></resources>

2、引用

/*  res/value/arrays 目录下 */String[] items = getResources().getStringArray(R.array.week_day);

2、res/value/attrs:自定义view的自定义属性

1、定义

<?xml version="1.0" encoding="utf-8"?><resources>    <!--自定义属性-->    <declare-styleable name="TagFlowLayout">        <attr name="auto_select_effect" format="boolean"></attr>        <attr name="max_select" format="integer"></attr>        <attr name="gravity">            <enum name="left" value="-1" />            <enum name="center" value="0" />            <enum name="right" value="1" />        </attr>    </declare-styleable></resources>

2、引用:自定义view的构造方法中

   public TagFlowLayout(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        //读取attrs中资源        TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.TagFlowLayout);        //第一个参数,读取attrs中参数名,是以“样式名_参数名”的形式。        //第二个参数,是默认值,如果从xml中获取不到则使用默认值。        mAutoSelectEffect = ta.getBoolean(R.styleable.TagFlowLayout_auto_select_effect, true);        //TypedArray 通常最后调用 .recycle() 方法,为了保持以后使用该属性一致性        ta.recycle();    }

3、res/value/colors:颜色

<?xml version="1.0" encoding="utf-8"?><resources>    <color name="colorPrimary">#3F51B5</color>    <color name="colorPrimaryDark">#303F9F</color>    <color name="colorAccent">#FF4081</color></resources>

4、res/value/dimens:尺寸

<?xml version="1.0" encoding="utf-8"?><resources>    <dimen name="padding_small">8dp</dimen>    <dimen name="padding_medium">8dp</dimen>    <dimen name="padding_large">16dp</dimen></resources>

5、res/value/strings :字符串

<resources>    <string name="app_name">MyResource</string>    <!-- 下载新版app -->    <string name="download_percent">下载:&amp;lt;font color="#ff0000"&amp;gt;%1$s&amp;lt;/font&amp;gt;%%</string>    <!-- 注册 -->    <string name="str_register_now">我要注册</string>    <string name="str_register_now2">立即注册</string></resources>

6、res/value/styles:自定义APP的主题,或布局参数

<resources>    <!--定义APP主题-->    <!-- Base application theme. -->    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">        <!-- Customize your theme here. -->        <item name="colorPrimary">@color/colorPrimary</item>        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="colorAccent">@color/colorAccent</item>    </style>    <!--定义布局参数-->    <style name="text_white_8">        <item name="android:textColor">#ffffff</item>        <item name="android:textSize">8dp</item>    </style>    <style name="text_white_10">        <item name="android:textColor">#ffffff</item>        <item name="android:textSize">10dp</item>    </style></resources>

res/value下的引用:

res/value根节点都是resource

/*  res/value/colors 目录下 */int colors = R.color.colorAccent;/*  res/value/dimens 目录下 */int dimens = R.dimen.padding_small;/*  res/value/strings 目录下 */int strings = R.string.app_name;/*  res/value/styles 目录下 */int styles = R.style.AppTheme;

res/drawable:定义shape或selector

推荐阅读:Android - shape 使用

定义:

normal_bg.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android">    <solid android:color="#21BF64" />    <corners android:radius="30dp" />    <padding        android:bottom="2dp"        android:left="10dp"        android:right="10dp"        android:top="2dp" /></shape>

checked_bg.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" >    <solid android:color="#FFFFFF" />    <corners android:radius="30dp" />    <padding        android:bottom="2dp"        android:left="10dp"        android:right="10dp"        android:top="2dp" /></shape>

btn_login_selector.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/checked_bg" android:state_focused="true"></item>    <item android:drawable="@drawable/checked_bg" android:state_pressed="true"></item>    <item android:drawable="@drawable/normal_bg"></item></selector>

使用:设置背景

//xml中android:background="@drawable/normal_bg"//或android:background="@drawable/btn_login_selector"//代码中tv.setBackgroundResource(R.drawable.normal_bg);//或tv.setBackgroundResource(R.drawable.btn_login_selector);

res/raw:

raw属于隐藏文件夹,他放的是图片、音乐等资源(可以直接复制到设备中,不会被编译,并且不会被自动压缩,他会在R.java中生成对应的唯一ID);它区别于assets文件夹,assets文件夹用于存放需要打包到应用程序的静态文件,给文件夹下的文件不会被影射到R.java中(即不会生成对应的id)

引用:

InputStream is = getResources().openRawResource(R.raw.refresh_logo);

assets:

AssetManager am = null;  am = getAssets();  InputStream is = am.open("filename");  

res/raw和assets的相同点:

1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。

res/raw和assets的不同点:

1.res/raw中的文件会被映射到R.Java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹

原创粉丝点击