Trang 1 của 3 123 CuốiCuối
Kết quả 1 đến 10 của 25
  1. #1
    Ngày tham gia
    Jul 2015
    Bài viết
    5

    Xem hình ảnh bằng cách sử dụng Gallery trong lập trình ứng dụng Android

    dưới đây long sẽ hướng dẫn các bạn làm 1 silde trình diễn các hình ảnh của bạn bằng cách sử dụng đối tượng gallery trong lập trình android.


    [img]data/attachments/14/14134-4fb9a3277f378924f1ac76d8f8376952.jpg[/img]

    1) source code demo:
    click vào đây để download source code demo

    2) giới thiệu đối tượng gallery:
    - là một đối tượng dùng để quản lý hình ảnh của bạn. nó sẽ giúp cho bạn đang ở vị trí nào trong 1 đống ảnh của bạn.
    - nó còn được android xử lý tốt và như video bên dưới, bạn sẽ cảm thấy chúng rất mượt khi bạn kéo thả, chọn ...

    3) hình ảnh demo:


    [img]data/attachments/14/14133-7316526b4eebe64476297f3e425487da.jpg[/img]

    4) chú ý:
    - hình ảnh sử dụng trong demo có cùng tên và chỉ khác nhau ở vị trí cuối, giúp ta có thể dễ dàng quản lý chúng trong vòng lặp for.
    - ngoài ra các hình ảnh sử dụng các bạn nên để kích thước chúng bằng nhau nhé tránh gây bể font.
    - ứng dụng này chỉ mang tính chất demo chạy được. trong trường hợp các bạn thêm quá nhiều ảnh, dung lượng quá lớn thì android buộc ứng dụng phải dừng lại. và trong trường hợp này các bạn phải xử lý code quản lý dung lượng tốt hơn thì sẽ rất ok!



    [img]data/attachments/14/14135-5013f0a83ffb55b5c31dce4713386f79.jpg[/img]

    5) hướng dẫn code:

    - mainactivity.java


    Mã nguồn PHP:
    [color=#000000]
    package android.vn; import java.util.arraylist;import java.util.list; import android.app.activity;import android.graphics.bitmap;import android.graphics.drawable.bitmapdrawable;import android.graphics.drawable.drawable;import android.os.bundle;import android.view.view;import android.view.view.onclicklistener;import android.widget.adapterview;import android.widget.adapterview.onitemselectedlistener;import android.widget.gallery;import android.widget.imageview;import android.widget.imageview.scaletype; public class mainactivity extends activity { private imageview selectedimageview; private imageview leftarrowimageview; private imageview rightarrowimageview; private gallery gallery; private int selectedimageposition = 0; private list<drawable> drawables; private imageadaptergallery galimageadapter; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); //lấy danh sách hình ảnh getdrawableslist(); //thực hiện thiết lập giao diện setupui(); } //thiết lập các biến sử dụng từ giao diện xml private void setupui() { selectedimageview = (imageview) findviewbyid(r.id.selected_imageview); leftarrowimageview = (imageview) findviewbyid(r.id.left_arrow_imageview); rightarrowimageview = (imageview) findviewbyid(r.id.right_arrow_imageview); gallery = (gallery) findviewbyid(r.id.gallery); //tạo 1 lắng nge từ nút bên trái leftarrowimageview.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { if (selectedimageposition > 0) { --selectedimageposition; } gallery.setselection(selectedimageposition, false); } }); //tạo 1 lắng nge từ nút bên phải rightarrowimageview.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { if (selectedimageposition < drawables.size() - 1) { ++selectedimageposition; } gallery.setselection(selectedimageposition, false); } }); //tạo lắng nge từ đối tượng gallery gallery.setonitemselectedlistener(new onitemselectedlistener() { @override public void onitemselected(adapterview<?> parent, view view, int pos, long id) { selectedimageposition = pos; //kiểm tra vị trí ảnh trong danh sách hình ảnh để thiết lập 2 nút mũi tên như mong muốn if (selectedimageposition > 0 && selectedimageposition < drawables.size() - 1) { leftarrowimageview.setimagedrawable(getresources().getdrawable(r.drawable.arrow_left_enabled)); rightarrowimageview.setimagedrawable(getresources().getdrawable(r.drawable.arrow_right_enabled)); } else if (selectedimageposition == 0) { leftarrowimageview.setimagedrawable(getresources().getdrawable(r.drawable.arrow_left_disabled)); } else if (selectedimageposition == drawables.size() - 1) { rightarrowimageview.setimagedrawable(getresources().getdrawable(r.drawable.arrow_right_disabled)); } //thực hiện cập nhật lại viền changeborderforselectedimage(selectedimageposition); //cập nhật hình ảnh đc lựa chọn setselectedimage(selectedimageposition); } @override public void onnothingselected(adapterview<?> arg0) { } }); //tạo đối tượng imageadaptergallery galimageadapter = new imageadaptergallery(this, drawables); //thiết lập nguồn và đổ vào gallery gallery.setadapter(galimageadapter); if (drawables.size() > 0) { gallery.setselection(selectedimageposition, false); } if (drawables.size() == 1) { rightarrowimageview.setimagedrawable(getresources().getdrawable(r.drawable.arrow_right_disabled)); } } //thực hiện thay đổi viền cho hình ảnh được lựa chọn private void changeborderforselectedimage(int selecteditempos) { int count = gallery.getchildcount(); for (int i = 0; i < count; i++) { imageview imageview = (imageview) gallery.getchildat(i); imageview.setbackgrounddrawable(getresources().getdrawable(r.drawable.image_border)); imageview.setpadding(3, 3, 3, 3); } imageview imageview = (imageview) gallery.getselectedview(); imageview.setbackgrounddrawable(getresources().getdrawable(r.drawable.selected_image_border)); imageview.setpadding(3, 3, 3, 3); } //lấy danh sách các hình ảnh đưa vào mảng để quản lý private void getdrawableslist() { drawables = new arraylist<drawable>(); drawables.add(getresources().getdrawable(r.drawable.natureimage1)); drawables.add(getresources().getdrawable(r.drawable.natureimage2)); drawables.add(getresources().getdrawable(r.drawable.natureimage3)); drawables.add(getresources().getdrawable(r.drawable.natureimage4)); drawables.add(getresources().getdrawable(r.drawable.natureimage5)); drawables.add(getresources().getdrawable(r.drawable.natureimage6)); drawables.add(getresources().getdrawable(r.drawable.natureimage7)); drawables.add(getresources().getdrawable(r.drawable.natureimage8)); drawables.add(getresources().getdrawable(r.drawable.natureimage9)); drawables.add(getresources().getdrawable(r.drawable.natureimage10)); drawables.add(getresources().getdrawable(r.drawable.natureimage11)); drawables.add(getresources().getdrawable(r.drawable.natureimage12)); drawables.add(getresources().getdrawable(r.drawable.natureimage13)); drawables.add(getresources().getdrawable(r.drawable.natureimage14)); drawables.add(getresources().getdrawable(r.drawable.natureimage15)); } //thiết lập hình ảnh lựa chọn hiển thị trên imageview chính private void setselectedimage(int selectedimageposition) { bitmapdrawable bd = (bitmapdrawable) drawables.get(selectedimageposition); bitmap b = bitmap.createscaledbitmap(bd.getbitmap(), (int) (bd.getintrinsicheight() * 0.9), (int) (bd.getintrinsicwidth() * 0.7), false); selectedimageview.setimagebitmap(b); selectedimageview.setscaletype(scaletype.fit_xy); }}[/color]
    - res/drawable/image_border.xml


    Mã nguồn PHP:
    [color=#000000]
    [/color][color=#007700]<?[/color][color=#0000bb]xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][color=#0000bb]?>[/color]<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <gradient android:angle="90" android:centercolor="#777777" android:endcolor="#777777" android:startcolor="#777777" /> </shape> </item> <item android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp"> <shape android:shape="rectangle" > <solid android:color="#777777" /> </shape> </item> </layer-list>
    - res/drawable/selected_image_border.xml


    Mã nguồn PHP:
    [color=#000000]
    [/color][color=#007700]<?[/color][color=#0000bb]xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][color=#0000bb]?>[/color]<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <gradient android:angle="90" android:centercolor="#000" android:endcolor="#000" android:startcolor="#000" /> </shape> </item> <item android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp"> <shape android:shape="rectangle" > <solid android:color="#000" /> </shape> </item> </layer-list>
    - res/values/strings.xml


    Mã nguồn PHP:
    [color=#000000]
    [/color][color=#007700]<?[/color][color=#0000bb]xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][color=#0000bb]?>[/color]<resources> <string name="app_name">demoandroid</string> <string name="parsed_data">http://android.vn
    hướng dẫn bởi thanhlong90.it</string> <string name="action_settings">settings</string> <string name="hello_world">hello world!</string> </resources>
    - activity_main.xml


    Mã nguồn PHP:
    [color=#000000]
    [/color][color=#007700]<[/color][color=#0000bb]linearlayout xmlns[/color][color=#007700]:[/color][color=#0000bb]android[/color][color=#007700]=[/color][color=#dd0000]"http://schemas.android.com/apk/res/android" [/color][color=#0000bb]xmlns[/color][color=#007700]:[/color][color=#0000bb]tools[/color][color=#007700]=[/color][color=#dd0000]"http://schemas.android.com/tools" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]background[/color][color=#007700]=[/color][color=#dd0000]"@android:color/white" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]orientation[/color][color=#007700]=[/color][color=#dd0000]"vertical" [/color][color=#007700]> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"5dp" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]gravity[/color][color=#007700]=[/color][color=#dd0000]"center" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/parsed_data" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]textappearance[/color][color=#007700]=[/color][color=#dd0000]"?android:attr/textappearancemedium" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]textstyle[/color][color=#007700]=[/color][color=#dd0000]"bold" [/color][color=#007700]/> <[/color][color=#0000bb]imageview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/selected_imageview" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"fill_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"230dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_marginleft[/color][color=#007700]=[/color][color=#dd0000]"30dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_marginright[/color][color=#007700]=[/color][color=#dd0000]"30dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"10dip" [/color][color=#007700]/> <[/color][color=#0000bb]relativelayout android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/gallery_relative_layout" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"fill_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"150dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]orientation[/color][color=#007700]=[/color][color=#dd0000]"horizontal" [/color][color=#007700]> <[/color][color=#0000bb]imageview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/left_arrow_imageview" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_centervertical[/color][color=#007700]=[/color][color=#dd0000]"true" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_marginleft[/color][color=#007700]=[/color][color=#dd0000]"15dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]src[/color][color=#007700]=[/color][color=#dd0000]"@drawable/arrow_left_disabled" [/color][color=#007700]/> <[/color][color=#0000bb]gallery android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/gallery" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"0dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"150dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_marginleft[/color][color=#007700]=[/color][color=#dd0000]"20dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_marginright[/color][color=#007700]=[/color][color=#dd0000]"20dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_toleftof[/color][color=#007700]=[/color][color=#dd0000]"@+id/right_arrow_imageview" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_torightof[/color][color=#007700]=[/color][color=#dd0000]"@+id/left_arrow_imageview" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]spacing[/color][color=#007700]=[/color][color=#dd0000]"20dip" [/color][color=#007700]/> <[/color][color=#0000bb]imageview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/right_arrow_imageview" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_alignparentright[/color][color=#007700]=[/color][color=#dd0000]"true" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_centervertical[/color][color=#007700]=[/color][color=#dd0000]"true" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_marginright[/color][color=#007700]=[/color][color=#dd0000]"15dip" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]src[/color][color=#007700]=[/color][color=#dd0000]"@drawable/arrow_right_enabled" [/color][color=#007700]/> </[/color][color=#0000bb]relativelayout[/color][color=#007700]> </[/color][color=#0000bb]linearlayout[/color][color=#007700]>[/color] 
    6) video kết quả demo:


    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: thanhlong90.it@gmail.com

  2. #2
    Ngày tham gia
    Apr 2016
    Bài viết
    0
    ad cho mình hỏi, nếu mình muốn add các bitmap vào gallery thì sao ah, chứ kog phải các ảnh có trực tiếp trong máy. thanhlongi90.it

  3. #3
    Ngày tham gia
    Apr 2015
    Bài viết
    0
    bài này anh sử dụng hình ảnh đặt trong drawable và đổ anh vào bằng cách sử dụng đối tượng imageviewadapter... ảnh lấy từ trong máy thì xử lý phức tạp hơn, em phải tìm thư mục chứa hình ảnh rồi sau đó kiểm tra ảnh có tồn tại hay ko rồi đưa vào mảng ...

  4. #4
    Ngày tham gia
    Apr 2015
    Bài viết
    0
    ý là mình có các bitmap rồi(tự tạo),
    bitmap bitmap_1
    bitmap bitmap_2;
    bitmap bitmap_3;
    giờ sao add vào gallery

  5. #5
    Ngày tham gia
    Jun 2014
    Bài viết
    0
    bạn chỉ việc đưa anh của bạn vào mảng drawables rồi sau đó đổ vào imageviewadapter thôi!

  6. #6
    Ngày tham gia
    Apr 2016
    Bài viết
    0
    Trích dẫn Gửi bởi thanhlongi90.it
    bạn chỉ việc đưa anh của bạn vào mảng drawables rồi sau đó đổ vào imageviewadapter thôi!
    thế mới nói đó ah, làm sao đưa vào mảng đó.

  7. #7
    Ngày tham gia
    Dec 2014
    Bài viết
    0
    add ơi cho hỏi mình muốn cho thêm cái chức năng zoom ảnh vào thì phải làm thế nào nhỉ? có code demo cho mình xinh nhé!

  8. #8
    Ngày tham gia
    Nov 2014
    Đang ở
    36 Phạm Hùng - Cầu Giấy - Hà Nội
    Bài viết
    0
    thanhdd123 minh se nghien cuu van de nay va lam demo cho ban sau nhe!

  9. #9
    Ngày tham gia
    Jan 2015
    Bài viết
    0
    thanks add thanhlongi90.it nhé. rất mong sớm nhận được demo của add!

  10. #10
    Ngày tham gia
    Mar 2015
    Bài viết
    19
    vậy làm thế nào để khắc phục được tình trạng tràn bộ nhớ ở những máy cũ vậy mr long ?

Trang 1 của 3 123 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •