XML로 애니메이션을 작성하는 예제에 대한 자세한 설명

Y2J
풀어 주다: 2017-04-25 10:06:33
원래의
2760명이 탐색했습니다.

1. Selector

Android의 Selector는 주로 ListView 및 Button 컨트롤의 기본 배경을 변경하는 데 사용됩니다.

1. mylist_view.xml 파일을 생성합니다.
먼저 res 디렉터리에 새 drawable 폴더를 만든 다음, 새 drawable 폴더의 디렉터리 구조는 res/drawable/mylist_view.xml입니다.
2. 특정 요구 사항에 따라 mylist_view.xml 파일을 편집합니다.
새 mylist_view.xml 파일을 만든 후 내부 코드 구조는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8" ?>       
<selector xmlns:android="http://schemas.android.com/apk/res/android">        
</selector>
로그인 후 복사

이제 프로젝트 요구 사항에 따라 내부적으로 원하는 스타일을 정의할 수 있습니다.

<?xml version="1.0" encoding="utf-8" ?>       
<selector xmlns:android="http://schemas.android.com/apk/res/android">     
<!-- 默认时的背景图片-->      
  <item android:drawable="@drawable/pic1" />        
<!-- 没有焦点时的背景图片 -->      
  <item android:state_window_focused="false"       
        android:drawable="@drawable/pic1" />       
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->      
  <item android:state_focused="true" android:state_pressed="true"   android:drawable= "@drawable/pic2" />     
<!-- 触摸模式下单击时的背景图片-->      
<item android:state_focused="false" android:state_pressed="true"   android:drawable="@drawable/pic3" />      
<!--选中时的图片背景-->      
  <item android:state_selected="true"   android:drawable="@drawable/pic4" />       
<!--获得焦点时的图片背景-->      
  <item android:state_focused="true"   android:drawable="@drawable/pic5" />       
</selector>
로그인 후 복사

3. mylist_view.xml 파일을 인용합니다. >방금 생성한 파일을 참조하는 세 가지 방법이 있습니다.
(1) ListView에 다음 속성 코드를 추가합니다.
android:listSelector="@drawable/mylist_view"
(2) Add에서 ListView의 항목 인터페이스에 다음 속성 코드
android:Background="@drawable/mylist_view"
(3) JAVA 코드를 사용하여 직접 작성
Drawable drawable = getResources().getDrawable(R.drawable .mylist_view );
listView.setSelector(drawable);

목록이 블랙리스트에 추가되는 것을 방지하려면 ListView
android:cacheColorHint="@ android:color/transparent "
속성 소개:
android:state_selected가 선택됨
android:state_focused가 포커스를 얻음
android:state_pressed가 클릭됨
android:state_enabled는 이벤트에 응답할지 여부를 설정합니다. 모든 이벤트를 의미합니다


2. XML로 애니메이션 작성
애니메이션을 XML 파일에 배치할 수도 있어 유지 관리가 향상됩니다. 프로그램의. XML로 애니메이션을 작성하는 방법은 다음과 같습니다
1. res 폴더 아래에 anim이라는 새 폴더를 생성합니다 2. xml 파일을 생성하고 먼저 set 태그를 추가한 후 다음과 같이 태그를 변경합니다.

<set xmlns:android="http://schemas.android.com/apk/res/android"  
    android:interpolator="@android:anim/accelerate_interpolator">   
</set>
로그인 후 복사

3. 태그에 회전, 알파, 크기 조정 또는 변환 태그를 추가합니다. 4. 코드에서 AnimationUtils를 사용하여 xml 파일을 로드하고 애니메이션 객체를 생성합니다.

알파 애니메이션

<?xml version="1.0" encoding="utf-8"?>    
<set xmlns:android="http://schemas.android.com/apk/res/android"    
    android:interpolator="@android:anim/accelerate_interpolator">    
    <alpha    
        android:fromAlpha="1.0"    
        android:toAlpha="0.0"    
        android:startOffset="500"    
        android:duration="2000"    
            />      
</set>  
Animation a=AnimationUtils.loadAnimation(this, R.anim.alpha);  
iv.startAnimation(a);
로그인 후 복사

Scale Animation

<?xml version="1.0" encoding="utf-8"?>    
<set xmlns:android="http://schemas.android.com/apk/res/android"    
    android:interpolator="@android:anim/accelerate_interpolator">    
    <scale    
        android:fromXScale="1.0"    
        android:toXScale="0.0"    
        android:fromYScale="1.0"    
        android:toYScale="0.0"    
        android:pivotX="50%"    
        android:pivotY="50%"    
        android:duration="2000"    
    />      
</set>
로그인 후 복사

애니메이션 회전

<?xml version="1.0" encoding="utf-8"?>    
<set xmlns:android="http://schemas.android.com/apk/res/android"    
    android:interpolator="@android:anim/accelerate_interpolator">    
    <rotate    
        android:fromDegrees="0"    
        android:toDegrees="400"    
        android:pivotX="50%"    
        android:pivotY="50%"    
        android:duration="3000"    
    />      
</set>
로그인 후 복사

애니메이션 번역

<?xml version="1.0" encoding="utf-8"?>    
<set xmlns:android="http://schemas.android.com/apk/res/android"    
    android:interpolator="@android:anim/accelerate_interpolator">    
    <translate    
        android:fromXDelta="50%"    
        android:toXDelta="100%"    
        android:fromYDelta="50%"    
        android:toYDelta="100%"    
        android:duration="3000"    
    />      
</set>
로그인 후 복사

여기에서는 android:pivotX 및 android:pivotY 및 android:fromXDelta, android:toXDelta에 중점을 둡니다. android :pivotX="50"은 절대 좌표를 사용합니다
자체를 기준으로 android:pivotX="50%"
상위 컨트롤을 기준으로 android:pivotX="50%p"


이 애니메이션을 어떻게 부를까요?
은 styles.xml에서 호출됩니다.

<?xml version="1.0" encoding="utf-8"?>  
<resources>      
    <style mce_bogus="1" name="ThemeActivity">  
        <item name="android:windowAnimationStyle">@style/AnimationActivity</item>  
         <item name="android:windowNoTitle">true</item>  
    </style>      
    <style name="AnimationActivity" parent="@android:style/Animation.Activity" mce_bogus="1">  
        <item name="android:activityOpenEnterAnimation">@anim/translate</item>  
         <item name="android:activityOpenExitAnimation">@anim/rotate</item>  
          <item name="android:activityCloseEnterAnimation">@anim/close_enter</item>  
           <item name="android:activityCloseExitAnimation">@anim/close_exit</item>  
    </style>      
</resources>
로그인 후 복사

注:在/res 目录下新建 anim 目录,上面的Translate.xml,Scale.xml都是在这个文件夹下新建的。

3> Interpolator -- 定义动画变化的速率
① AccelerateDecelerateInterpolator:
   在动画开始和结束的地方速率改变比较慢,在中间的时候加速;
② AccelaerateInterPolotor:
    在动画开始的地方速率改变比较慢,然后开始加速;
③ CycleInterpolator:
动画循环播放特定的次数,速率沿着正弦曲线
④ DecelerateInterpolator:
在动画结束的地方速率比较慢
⑤ LinearInterpolator:
动画以匀速运动

在xml文件中定义Interpolator
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true"
这样所有的Animation共用一个Interpolator。
在代码中用代码设置如下
anim.setInterpolator(new AccelerateInterpolator());
在new一个AnimationSet中传入true则所有的Animation共用Interpolator。
 

위 내용은 XML로 애니메이션을 작성하는 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!