中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Android用Animation實(shí)現(xiàn)圖像的 漸變、縮放、位移、旋轉(zhuǎn)

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用
  Android 平臺(tái)提供了兩類動(dòng)畫。 一類是Tween動(dòng)畫,就是對場景里的對象不斷的進(jìn)行圖像變化來產(chǎn)生動(dòng)畫效果(旋轉(zhuǎn)、平移、放縮和漸變)。

下面就講一下Tweene Animations。

主要類:

Animation   動(dòng)畫

AlphaAnimation 漸變透明度

RotateAnimation 畫面旋轉(zhuǎn)

ScaleAnimation 漸變尺寸縮放

TranslateAnimation 位置移動(dòng)

AnimationSet  動(dòng)畫集


一.AlphaAnimation

其中AlphaAnimation類第一個(gè)參數(shù)fromAlpha表示動(dòng)畫起始時(shí)的透明度, 第二個(gè)參數(shù)toAlpha表示動(dòng)畫結(jié)束時(shí)的透明度。 

setDuration用來設(shè)置動(dòng)畫持續(xù)時(shí)間。


二.RotateAnimation

其中RotateAnimation類第一個(gè)參數(shù)fromDegrees表示動(dòng)畫起始時(shí)的角度, 第二個(gè)參數(shù)toDegrees表示動(dòng)畫結(jié)束時(shí)的角度。 

另外還可以設(shè)置伸縮模式pivotXType、pivotYType, 伸縮動(dòng)畫相對于x,y 坐標(biāo)的開始位置pivotXValue、pivotYValue等。


三.ScaleAnimation

ScaleAnimation類中

第一個(gè)參數(shù)fromX ,第二個(gè)參數(shù)toX:分別是動(dòng)畫起始、結(jié)束時(shí)X坐標(biāo)上的伸縮尺寸。

第三個(gè)參數(shù)fromY ,第四個(gè)參數(shù)toY:分別是動(dòng)畫起始、結(jié)束時(shí)Y坐標(biāo)上的伸縮尺寸。

另外還可以設(shè)置伸縮模式pivotXType、pivotYType, 伸縮動(dòng)畫相對于x,y 坐標(biāo)的開始位置pivotXValue、pivotYValue等。


四.TranslateAnimation

第一個(gè)參數(shù)fromXDelta ,第二個(gè)參數(shù)toXDelta:分別是動(dòng)畫起始、結(jié)束時(shí)X坐標(biāo)。

第三個(gè)參數(shù)fromYDelta ,第四個(gè)參數(shù)toYDelta:分別是動(dòng)畫起始、結(jié)束時(shí)Y坐標(biāo)。


下面我實(shí)現(xiàn)的這個(gè)例子是使得圖片有上述四個(gè)動(dòng)畫效果,且其中第五實(shí)現(xiàn)的是兩個(gè)效果的重疊,具體的實(shí)現(xiàn)截圖如下:


點(diǎn)擊各個(gè)按鈕會(huì)做出相應(yīng)的反應(yīng)。

本實(shí)例用到的布局文件如下:

    <?xml version="1.0" encoding="utf-8"?>  
    <AbsoluteLayout  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        xmlns:android="http://schemas.android.com/apk/res/android">  
    <Button  
        android:id="@+id/button_scale"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="scale"  
        android:layout_x="5dp"  
        android:layout_y="383dp" />  
    <Button  
        android:id="@+id/button_rotate"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="rotate"  
        android:layout_x="158dp"  
        android:layout_y="383dp" />  
    <Button  
        android:id="@+id/button_alpha"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="alpha"  
        android:layout_x="5dp"  
        android:layout_y="331dp" />  
    <Button  
        android:id="@+id/button_translate"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="translate"  
        android:layout_x="160dp"  
        android:layout_y="329dp" />  
    <Button  
        android:id="@+id/button_alpha_translate"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="alpha_translate"  
        android:layout_x="84dp"  
        android:layout_y="265dp" />  
      
    <ImageView  
        android:id="@+id/imageview"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_x="105dp"  
        android:layout_y="133dp"   
        android:src="@drawable/ic_launcher"  
        />  
    </AbsoluteLayout>  

實(shí)現(xiàn)本實(shí)例的源代碼如下:
    public class Animations_Activity extends Activity {  
        private Button button1;  
        private Button button2;  
        private Button button3;  
        private Button button4;  
        private Button button5;  
        private ImageView imageView;  
      
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_animations_);  
            button1=(Button)findViewById(R.id.button_alpha);  
            button2=(Button)findViewById(R.id.button_rotate);  
            button3=(Button)findViewById(R.id.button_scale);  
            button4=(Button)findViewById(R.id.button_translate);  
            button5=(Button)findViewById(R.id.button_alpha_translate);  
            imageView=(ImageView)findViewById(R.id.imageview);  
            button1.setOnClickListener(new MyButton());  
            button2.setOnClickListener(new MyButton());  
            button3.setOnClickListener(new MyButton());  
            button4.setOnClickListener(new MyButton());  
            button5.setOnClickListener(new MyButton());  
        }  
        class MyButton implements OnClickListener{  
      
            @Override  
            public void onClick(View arg0) {  
                // TODO Auto-generated method stub  
                switch (arg0.getId()) {  
                case R.id.button_alpha:  
                    Alpha();  
                    break;  
                case R.id.button_rotate:  
                    Rotata();  
                    break;  
                case R.id.button_scale:  
                    Scale();  
                    break;  
                case R.id.button_translate:  
                    Translate();  
                    break;  
                case R.id.button_alpha_translate:  
                    Alpha_Translate();  
                    break;  
      
                default:  
                    break;  
                }  
            }  
              
        }  
          
        /* 
         * 1.創(chuàng)建一個(gè)AnimationSet對象,該對象存儲(chǔ)的是動(dòng)畫的集合 
         * 2.根據(jù)需要?jiǎng)?chuàng)建相應(yīng)的Animation對象 
         * 3.根據(jù)動(dòng)畫的需求,為Animation對象設(shè)置相應(yīng)的數(shù)據(jù)(即執(zhí)行效果) 
         * 4.獎(jiǎng)Animation對象添加到AnimationSet對象當(dāng)中 
         * 5.使用控件對象開始執(zhí)行AnimationSet 
         */  
        public void Alpha() {  
            AnimationSet animationSet=new AnimationSet(true);  
            AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0);  
            alphaAnimation.setDuration(2000);  
            animationSet.addAnimation(alphaAnimation);  
            imageView.startAnimation(animationSet);  
        }  
        public void Rotata(){  
            AnimationSet animationSet=new AnimationSet(true);  
            //后面的四個(gè)參數(shù)定義的是旋轉(zhuǎn)的圓心位置  
            RotateAnimation rotateAnimation=new RotateAnimation(  
                    0, 360,   
                    Animation.RELATIVE_TO_PARENT, 1f,  
                    Animation.RELATIVE_TO_PARENT, 0f);  
            rotateAnimation.setDuration(2000);  
            animationSet.addAnimation(rotateAnimation);  
            imageView.startAnimation(animationSet);  
        }  
        public void Scale() {  
            AnimationSet animationSet=new AnimationSet(true);  
            ScaleAnimation scaleAnimation=new ScaleAnimation(  
                    1, 0.1f, 1, 0.1f,   
                    Animation.RELATIVE_TO_SELF, 0.5f,   
                    Animation.RELATIVE_TO_SELF, 0.5f);  
            scaleAnimation.setDuration(2000);  
            animationSet.addAnimation(scaleAnimation);  
            imageView.startAnimation(scaleAnimation);  
        }  
        public void Translate() {  
            AnimationSet animationSet=new AnimationSet(true);  
            TranslateAnimation translateAnimation=new TranslateAnimation(  
                    Animation.RELATIVE_TO_SELF, 0f,  //X軸的開始位置  
                    Animation.RELATIVE_TO_SELF, 0.5f,  //X軸的結(jié)束位置  
                    Animation.RELATIVE_TO_SELF, 0f,  //Y軸的開始位置  
                    Animation.RELATIVE_TO_SELF, 1.0f);  //Y軸的結(jié)束位置  
            translateAnimation.setDuration(2000);  
            animationSet.addAnimation(translateAnimation);  
              
            /* 
             * 第一行的設(shè)置如果為true,則動(dòng)畫執(zhí)行完之后效果定格在執(zhí)行完之后的狀態(tài) 
             * 第二行的設(shè)置如果為false,則動(dòng)畫執(zhí)行完之后效果定格在執(zhí)行完之后的狀態(tài) 
             * 第三行設(shè)置的是一個(gè)long類型的值,是指動(dòng)畫延遲多少毫秒之后執(zhí)行 
             * 第四行定義的是動(dòng)畫重復(fù)幾次執(zhí)行 
             */  
            animationSet.setFillAfter(true);  
            animationSet.setFillBefore(false);  
            animationSet.setStartOffset(2000);  
            animationSet.setRepeatCount(3);  
              
            imageView.startAnimation(animationSet);  
        }  
        public void Alpha_Translate() {  
            AnimationSet animationSet=new AnimationSet(true);  
            AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0);  
            alphaAnimation.setDuration(2000);  
            animationSet.addAnimation(alphaAnimation);  
            TranslateAnimation translateAnimation=new TranslateAnimation(  
                    Animation.RELATIVE_TO_SELF, 0f,  //X軸的開始位置  
                    Animation.RELATIVE_TO_SELF, 0.5f,  //X軸的結(jié)束位置  
                    Animation.RELATIVE_TO_SELF, 0f,  //Y軸的開始位置  
                    Animation.RELATIVE_TO_SELF, 1.0f);  //Y軸的結(jié)束位置  
            translateAnimation.setDuration(2000);  
            animationSet.addAnimation(translateAnimation);  
            imageView.startAnimation(animationSet);  
        }  
      
        @Override  
        public boolean onCreateOptionsMenu(Menu menu) {  
            // Inflate the menu; this adds items to the action bar if it is present.  
            getMenuInflater().inflate(R.menu.activity_animations_, menu);  
            return true;  
        }  
      
    }  

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Java統(tǒng)計(jì)字符串中漢字,英文,數(shù)字,特殊符號個(gè)數(shù)

下一篇:python轉(zhuǎn)換字符串為datetime類型