Danh mục

Lập trình Android 3.0

Số trang: 9      Loại file: doc      Dung lượng: 107.00 KB      Lượt xem: 9      Lượt tải: 0    
Thu Hiền

Hỗ trợ phí lưu trữ khi tải xuống: 1,000 VND Tải xuống file đầy đủ (9 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Một trong những cải tiến của Android 3.0 so với các đời Android trước là hỗ trợ trực tiếp cho lập trình viên về việc lập trình xử lý Drag, Drop. Trong bài viết sau đây mình sẽ tạo 1 ứng dụng nho nhỏ demo cho tính năng này.
Nội dung trích xuất từ tài liệu:
Lập trình Android 3.0 Trung tâm Tin học – ĐH KHTN Drag và Drop trên Android 3.0Một trong những cải tiến của Android 3.0 so với các đ ời Android tr ước là h ỗ tr ợ tr ựctiếp cho lập trình viên về việc lập trình xử lý Drag, Drop. Trong bài vi ết sau đây mìnhsẽ tạo 1 ứng dụng nho nhỏ demo cho tính năng này.1/ Các bạn tạo Project như sau:Project name: DragDropDemoBuild Target: Android 3.0Application name: DragDropDemoPackage name: com.dac.drag.drop.demoCreate Activity: MainActivity2/ Trong folder Layout các bạn tạo 2 file lay out đ ể dùng làm fragment cho ứng d ụng : + dropzone.xml : Lập trình Android – http://laptrinhdidong.vn Page 1 Trung tâm Tin học – ĐH KHTN + Palette.xml: Trong file main.xml các bạn sữ dụng 2 file trên: Trung tâm Tin học – ĐH KHTN android:id=@+id/dropzone android:layout_width=0px android:layout_height=match_parent android:layout_weight=2 />3/ Trong folder values/ các bạn tạo file attrs.xml để quy đ ịnh thuoc tính cho 2 nút mìnhsẽ tạo bằng file Java: 4/ Và trong Package chính các bạn tạo các file đ ể vẽ và sử lý các nút (dot) đ ồng th ờicũng sinh ra các Log để theo dõi trong View Debug: + Dot.java:package com.dac.drag.drop.demo;import android.content.ClipData;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.util.Log;import android.view.DragEvent;import android.view.View;public class Dot extends View implements View.OnDragListener{ private static final int DEFAULT_RADIUS = 20; private static final int DEFAULT_COLOR = Color.WHITE; private static final int SELECTED_COLOR = Color.MAGENTA; protected static final String DOTTAG = DragDot; private Paint mNormalPaint; private Paint mDraggingPaint; private int mColor = DEFAULT_COLOR;Lập trình Android – http://laptrinhdidong.vn Page 3 Trung tâm Tin học – ĐH KHTN private int mRadius = DEFAULT_RADIUS; private boolean inDrag; public Dot(Context context, AttributeSet attrs) { super(context, attrs); TypedArray myAttrs = context.obtainStyledAttributes(attrs, R.styleable.Dot); final int numAttrs = myAttrs.getIndexCount(); for (int i = 0; i < numAttrs; i++) { int attr = myAttrs.getIndex(i); switch (attr) { case R.styleable.Dot_radius: mRadius = myAttrs.getDimensionPixelSize(attr, DEFAULT_RADIUS); break; case R.styleable.Dot_color: mColor = myAttrs.getColor(attr, DEFAULT_COLOR); break; } } myAttrs.recycle(); mNormalPaint = new Paint(); mNormalPaint.setColor(mColor); mNormalPaint.setAntiAlias(true); mDraggingPaint = new Paint(); mDraggingPaint.setColor(SELECTED_COLOR); mDraggingPaint.setAntiAlias(true); setOnLongClickListener(lcListener); setOnDragListener(this); } private static View.OnLongClickListener lcListener = new View.OnLongClickListener() { private boolean mDragInProgress; public boolean onLongClick(View v) { ClipData data = ClipData.newPlainText(DragData,(String)v.getTag()); mDragInProgress = v.startDrag(data, new View.DragShadowBuilder(v), (Object)v, 0); Log.v((String) v.getTag(), starting drag? + mDragInProgress); return true; } }; @Override protected void onMeasure(int widthSpec, int heightSpec) { int size = 2*mRadius + getPaddingLeft() + getPaddingRight();Lập trình Android – http://laptrinhdidong.vn Page 4 Trung tâm Tin học – ĐH KHTN setMeasuredDimension(size, size); } public boolean onDrag(View v, DragEvent event) { String dotTAG = (String) getTag(); if(event.getLocalState() != this) { Log.v(dotTAG, This drag event is not for us); return false; } boolean result = true; int action = event.getAction(); float x = event.getX(); float y = event.getY(); switch(action) { case DragEvent.ACTION_DRAG_STARTED: Log.v(dotTAG, drag started. X: + x + , Y: + y); inDrag = true; break; case DragEvent.ACTION_DRAG_LOCATION: Log.v(dotTAG, drag proceeding... At: + x + , + y); break; case DragEvent.ACTION_DRAG_ENTERED: Log.v(dotTAG, drag entered. At: + x + , + y); break; case DragEvent.ACTION_DRAG_EXITED: Log.v(dotTAG, drag exited. At: + x + , + y); break; case DragEvent.ACTION_DROP: Log.v(dotTAG, drag dropped. At: + x + , + y); result = false; break; case DragEvent.ACTION_DRAG_ENDED: Log.v(dotTAG, drag ended. Success? + event.getResult()); inDrag = false; break; default: Log.v(dotTAG, some other drag action: + action); result = false; break; } return result; } public void draw(Canvas canvas) { ...

Tài liệu được xem nhiều: