Tổng hợp Xử lý animation trên dialog trong lập trình ứng dụng android

Thảo luận trong 'Android nâng cao' bắt đầu bởi thanhlong90.it, 29/10/13.

  1. thanhlong90.it

    thanhlong90.it Admin Support

    Lượt xem: 20,756
    Chào các bạn, hôm nay chúng ta sẽ quay trở lại vấn đề làm đẹp giao diện, đó là làm thế nào để làm đẹp một ứng dụng android. Như tiêu đề hôm nay Long sẽ hướng dẫn các bạn làm animation trên các dialog. Tuy chỉ với vài dòng code cơ bản nhưng nó có thể thay đổi ứng dụng của bạn một cách nhìn khác của người dùng.

    1) Source code demo lập trình android:
    - Click vào đây để download source code demo

    2) Giới thiệu thêm về animation:
    - Trong demo này Long có sử dụng 2 tập tin xml xử lý animation trong của thư viện android đặt trong thư mục style.
    PHP:
    <style name="DialogAnimation">
            <
    item name="android:windowEnterAnimation">@android:anim/slide_in_left</item>
            <
    item name="android:windowExitAnimation">@android:anim/slide_out_right</item>
        </
    style>
    - Ngoài ra các bạn cũng có thể định nghĩa 2 tập tin xml riêng theo ý muốn của bạn để thiết lập một animation tùy ý về góc xoay, thời gian trượt, thời gian di chuyển ...

    3) Video hướng dẫn:


    4) Hướng dẫn code:
    - res/values/strings.xml
    PHP:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
     
        <string name="parsed_data">http://android.vn\nHướng dẫn bởi thanhlong90.it</string>
        <string name="app_name">DemoAndroidDialogAnimation</string>
        <string name="action_settings">Settings</string>
        <string name="hello_world">Hello world!</string>
        <string name="opendialog">Open Dialog</string>
        <string name="dismiss">Dismiss</string>
     
    </resources>
    - dialoglayout.xml
    PHP:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        
    xmlns:tools="http://schemas.android.com/tools"
        
    android:layout_width="fill_parent"
        
    android:layout_height="fill_parent"
        
    android:orientation="vertical">
     
        <
    ImageView
            android
    :layout_width="wrap_content"
            
    android:layout_height="wrap_content"
            
    android:contentDescription="@string/hello_world"
            
    android:layout_gravity="center"
            
    android:src="@drawable/ic_launcher"/>
     
        <
    Button
            android
    :id="@+id/dismiss"
            
    android:layout_width="wrap_content"
            
    android:layout_height="wrap_content"
            
    android:layout_gravity="center"
            
    android:text="@string/dismiss"/>
     
    </
    LinearLayout>
    - activity_main.xml
    PHP:
    <RelativeLayout 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" >
     
        <
    TextView
            android
    :layout_width="match_parent"
            
    android:layout_height="wrap_content"
            
    android:layout_marginTop="5dp"
            
    android:gravity="center"
            
    android:text="@string/parsed_data"
            
    android:textAppearance="?android:attr/textAppearanceMedium"
            
    android:textStyle="bold" />
     
     
        <
    Button
            android
    :id="@+id/opendialog"
            
    android:layout_width="wrap_content"
            
    android:layout_height="wrap_content"
            
    android:layout_centerHorizontal="true"
            
    android:layout_centerVertical="true"
            
    android:text="@string/opendialog"
            
    tools:context=".MainActivity" />
     
    </
    RelativeLayout>
    - MainActivity.java
    PHP:
    package thanhlong90.it.demoandroiddialoganimation;
     
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.app.Activity;
    import android.app.Dialog;
     
    public class 
    MainActivity extends Activity {
     
        
    Button btnOpenDialog;
     
        @
    Override
        
    public void onCreate(Bundle savedInstanceState) {
            
    super.onCreate(savedInstanceState);
            
    setContentView(R.layout.activity_main);
            
    btnOpenDialog = (Button)findViewById(R.id.opendialog);
            
    btnOpenDialog.setOnClickListener(new OnClickListener(){
                @
    Override
                
    public void onClick(View v) {
                    
    openDialog();
                }
            });
        }
     
        private 
    void openDialog(){
            final 
    Dialog dialog = new Dialog(MainActivity.this);
            
    dialog.setTitle("Animation Dialog");
            
    dialog.setContentView(R.layout.dialoglayout);
            
    dialog.getWindow().getAttributes().windowAnimations R.style.DialogAnimation;
            
    Button btnDismiss = (Button)dialog.getWindow().findViewById(R.id.dismiss);
            
    btnDismiss.setOnClickListener(new OnClickListener(){
                @
    Override
                
    public void onClick(View v) {
                    
    dialog.dismiss();
                }
            });
            
    dialog.show();
        }
    }
    5) Hình ảnh kết quả demo:
    device-2013-10-29-090442

    Bài viết đăng lên diễn đàn khác vui lòng ghi rõ nguồn: Android.vn
    Pass giải nén: http://android.vn
    Support:
    - Skype: thanhlong90.it.support
    - Gmail: thanhlong90.it@gmail.com
    Chúc các bạn thành công!
    dialog, animation, thanhlong90.it, thanh long, hướng dẫn, ví dụ, demo, example, tutorial
    thoinv, viet55pmGDG_HaNoiAndroidTeam thích bài này.
  2. GDG_HaNoiAndroidTeam

    GDG_HaNoiAndroidTeam Google Developer Group

    Anh em vọc xong kiến thức ít giao lưu quá... Chia sẻ anh em ít animation cho dialog mình làm vui.

    Các file đính kèm:

  3. thoinv

    thoinv New Member

    Bài viết rất công phu (y). Thanks admin!

Chia sẻ trang này