Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ   Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ
Trang Chủ Giới Thiệu Chương Trình Học Tài Liệu Lịch Khai Giảng Học Phí Việc Làm Lộ trình học

Go Back   Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ > WEB - ĐỒ HỌA - LẬP TRÌNH > LẬP TRÌNH ANDROID
Đăng Ký Thành Viên Thành Viên Lịch Ðánh Dấu Ðã Ðọc


LẬP TRÌNH ANDROID LẬP TRÌNH ỨNG DỤNG, GAME DI ĐỘNG TRÊN ANDROID

Vui lòng gõ từ khóa liên quan đến vấn đề bạn quan tâm vào khung dưới , trước khi đặt câu hỏi mới.


Trả lời
 
Ðiều Chỉnh
  #1  
Old 21-01-2013, 11:27
hungdk_nhatnghe hungdk_nhatnghe vẫn chưa có mặt trong diễn đàn
Moderator
 
Tham gia ngày: Nov 2012
Tuổi: 30
Bài gởi: 135
Thanks: 14
Thanked 81 Times in 51 Posts
LẬP TRÌNH ANDROID - KHÓA HỌC ANDROID - Tạo chuyển động với Animation Drawable

Tạo chuyển động với Animation Drawable



SOURCE HÌNH

Giới thiệu:

AnimationDrawable chuyển lần lượt từng slide ảnh trong thời gian rất ngắn để tạo ra một sự chuyển động, tương tự như cách làm phim cổ điển.

Mục tiêu:

Xoay sản phẩm 360 độ.



Chuẩn bị:

Giải nén gói down về. Chép các file hình trong source download vào thư mục res/drawable-ldpi.

Bước 1:

Thiết kế giao diện gồm 1 ImageView và 2 Button
Kéo các widget vào giao diện thiết bị



Bước 2:

*Cách 1:

Tạo animation bằng code:

Tạo ra mảng chứa hình

PHP Code:
int ds_hinh[] = {
                
R.drawable.ss1,R.drawable.ss2,R.drawable.ss3,R.drawable.ss4,R.drawable.ss5,R.drawable.ss6,R.drawable.ss7,
                
R.drawable.ss8,R.drawable.ss9,R.drawable.ss10,R.drawable.ss11,R.drawable.ss12,R.drawable.ss13,R.drawable.ss14,
                
R.drawable.ss15,R.drawable.ss16,R.drawable.ss17,R.drawable.ss18,R.drawable.ss19,R.drawable.ss20,R.drawable.ss21,
                
R.drawable.ss22,R.drawable.ss23,R.drawable.ss24,R.drawable.ss25,R.drawable.ss26,R.drawable.ss27,R.drawable.ss28,
                
R.drawable.ss29,R.drawable.ss30,R.drawable.ss31,R.drawable.ss32,R.drawable.ss33,R.drawable.ss34,R.drawable.ss35,R.drawable.ss36
        
}; 
Tạo đối tượng Animation

PHP Code:
AnimationDrawable animation = new AnimationDrawable(); 
Add các Frame vào đối tượng animation, mỗi frame là một hình và có duration là 100

addFrame(Drawable frame, int duration)

PHP Code:
for(int i 0ds_hinh.lengthi++)
        {
            
animation.addFrame(getResources().getDrawable(ds_hinh[i]), 100);
        } 
SetOneShot nhận giá trị boolean, nếu true thì animation 1 lần, false thì animation luôn luôn lặp đi lặp lại

PHP Code:
animation.setOneShot(false); 
Gắn animation vào imageView

PHP Code:
imageView.setImageDrawable(animation); 
*Cách 2:

Tạo Animation bằng XML

Tạo thư mục anim chứa file anim_android.xml



Nội dung file anim_android.xml như sau:

PHP Code:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false"
    >
    <item
        android:drawable="@drawable/ss1"
        android:duration="100"/>
    <item
        android:drawable="@drawable/ss2"
        android:duration="100"/>
    <item
        android:drawable="@drawable/ss3"
        android:duration="100"/>
    <item
        android:drawable="@drawable/ss4"
        android:duration="100"/>
    <item
        android:drawable="@drawable/ss5"
        android:duration="100"/>
    <item
        android:drawable="@drawable/ss6"
        android:duration="100"/>
    <item
        android:drawable="@drawable/ss7"
        android:duration="100"/>
</animation-list>
Gắn animation vào imageView

PHP Code:
imageView.setBackgroundResource(R.anim.anim_android);
AnimationDrawable animation = (AnimationDrawableimageView.getBackground(); 
Bước 3:

Sự kiện onclick 2 button start and stop

PHP Code:
btn_start.setOnClickListener(new View.OnClickListener() {
            
            @
Override
            
public void onClick(View v) {
                
// TODO Auto-generated method stub
                
if(!animation.isRunning())
                
animation.start();            
            }
        });
btn_stop.setOnClickListener(new View.OnClickListener() {
            
            @
Override
            
public void onClick(View v) {
                
// TODO Auto-generated method stub
                
if(animation.isRunning())
                
animation.stop(); 
            }
        }); 

Hoàn tất.

thay đổi nội dung bởi: hungdk_nhatnghe, 21-01-2013 lúc 19:06
Trả Lời Với Trích Dẫn
Đã có 3 người gửi lời cảm ơn hungdk_nhatnghe vì bài viết hữu ích này:
  #2  
Old 25-03-2013, 09:19
bobochacha07 bobochacha07 vẫn chưa có mặt trong diễn đàn
Mới Đăng Ký
 
Tham gia ngày: Jan 2011
Tuổi: 29
Bài gởi: 1
Thanks: 1
Thanked 0 Times in 0 Posts
cho minh hỏi làm sao tạo thư mục anim . Minh tạo nó toàn báo lỗi
Trả Lời Với Trích Dẫn
  #3  
Old 12-04-2013, 17:06
kenbka kenbka vẫn chưa có mặt trong diễn đàn
Thành Viên Mới
 
Tham gia ngày: Apr 2013
Bài gởi: 10
Thanks: 0
Thanked 1 Time in 1 Post
mình đã thử và thấy nếu cho nhiều item ( >6 ) thì chương trình ko chạy được (báo lỗi OutOfMemoryError), làm thế nào để xử lý lỗi này?
Trả Lời Với Trích Dẫn
  #4  
Old 06-05-2013, 19:19
nguyendoanhkhoa nguyendoanhkhoa vẫn chưa có mặt trong diễn đàn
Khám Phá
 
Tham gia ngày: Mar 2012
Tuổi: 40
Bài gởi: 217
Thanks: 44
Thanked 136 Times in 70 Posts
click phải thư mục res rồi New -> Folder rồi đặt tên thôi mà bạn, đâu có lỗi gì đâu ta.
Trả Lời Với Trích Dẫn
  #5  
Old 12-12-2013, 15:34
uitpro uitpro vẫn chưa có mặt trong diễn đàn
Mới Đăng Ký
 
Tham gia ngày: Aug 2011
Tuổi: 29
Bài gởi: 8
Thanks: 0
Thanked 1 Time in 1 Post
Link Download ở đâu , sao mình ko thấy nhỉ ?
Trả Lời Với Trích Dẫn
  #6  
Old 11-01-2014, 08:48
cykablet cykablet vẫn chưa có mặt trong diễn đàn
Mới Đăng Ký
 
Tham gia ngày: Jan 2014
Tuổi: 30
Bài gởi: 3
Thanks: 1
Thanked 0 Times in 0 Posts
Thầy Khoa và bạn hungdk_nhatnghe có thế cho mình hỏi 1 chút đc ko? Mình đã thực hiện công viêc trên là làm cho ảnh chyển động 360 độ,,,Nhưng giờ mình muốn khj mình nhấp vào "Bắt đầu" thì bức ảnh xoay trong 15s và tốc độ xoay là 0.5s,,,mình đã thử 1 vài trường hợp khi sử dụng hàm CountDownTimer nhưng vẫn ko thực hiện đúng ý mình đc. Thầy và các bạn có thế giúp mình sữa cái lỗi này đc ko ah? Cảm ơn mọi người trước!!!
Đây là code của mình áp dụng thử:

PHP Code:
public class MainActivity extends Activity {
    private 
ImageView progress;
    private 
Button nutBam;
    private 
AnimationDrawable frameAnimation;
    
CountDownTimer a;
    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.activity_main);

        
nutBam = (ButtonfindViewById(R.id.button);
        
nutBam.setText("Bắt đầu");
        
        
progress = (ImageViewfindViewById(R.id.im);
        
        new 
CountDownTimer(15000500) {
            
            @
Override
            
public void onTick(long millisUntilFinished) {
                
// TODO Auto-generated method stub
                
if (progress != null) {
                    
progress.setVisibility(View.VISIBLE);            
                    
frameAnimation = (AnimationDrawableprogress.getDrawable();
                    
frameAnimation.setCallback(progress);
                    
frameAnimation.setVisible(truetrue);
                }
                
nutBam.setOnClickListener(new View.OnClickListener() {
                    @
Override
                    
public void onClick(View v) {
                        if (!
frameAnimation.isRunning()) {
                            
frameAnimation.start();
                            
nutBam.setText("Dừng lại");
                            
Log.v("---""frameAnimation.start()");
                        } else {
                            
frameAnimation.stop();
                            
nutBam.setText("Bắt đầu");
                            
Log.v("---""frameAnimation.stop()");
                        }
                    }
                });
            }
            
            @
Override
            
public void onFinish() {
                
TextView tv null;
                
// TODO Auto-generated method stub
                
tv.setText("Chiến thắng!!!");
                
            }
        }.
start();
        
    }


thay đổi nội dung bởi: cykablet, 12-01-2014 lúc 08:39
Trả Lời Với Trích Dẫn
  #7  
Old 07-02-2014, 10:52
mkdir mkdir vẫn chưa có mặt trong diễn đàn
Mới Đăng Ký
 
Tham gia ngày: Jan 2014
Tuổi: 29
Bài gởi: 2
Thanks: 0
Thanked 0 Times in 0 Posts
sao ko thấy link download source code , bạn còn source code ko cho xin link được ko bạn
Trả Lời Với Trích Dẫn
  #8  
Old 28-03-2014, 21:17
vu250691 vu250691 vẫn chưa có mặt trong diễn đàn
Banned
 
Tham gia ngày: Mar 2014
Tuổi: 39
Bài gởi: 3
Thanks: 0
Thanked 0 Times in 0 Posts
bài của bạn hay làm, thank bạn
Trả Lời Với Trích Dẫn
  #9  
Old 28-03-2014, 23:46
vu250691 vu250691 vẫn chưa có mặt trong diễn đàn
Banned
 
Tham gia ngày: Mar 2014
Tuổi: 39
Bài gởi: 3
Thanks: 0
Thanked 0 Times in 0 Posts
bài của bạn hay làm, thank bạn
Trả Lời Với Trích Dẫn
  #10  
Old 29-03-2014, 00:16
vu250691 vu250691 vẫn chưa có mặt trong diễn đàn
Banned
 
Tham gia ngày: Mar 2014
Tuổi: 39
Bài gởi: 3
Thanks: 0
Thanked 0 Times in 0 Posts
bài của bạn hay làm, thank bạn
Trả Lời Với Trích Dẫn
Trả lời

Bookmarks

Ðiều Chỉnh

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người Gởi Chuyên mục Trả lời Bài mới gởi
LẬP TRÌNH ANDROID - KHÓA HỌC ANDROID - Tạo màn hình chào - Thêm activity, chuyển activity này sang activity khác hungdk_nhatnghe LẬP TRÌNH ANDROID 4 04-11-2013 20:57



Múi giờ GMT +7. Hiện tại là 17:51
Powered by: vBulletin Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Ad Management by RedTyger