Tôi muốn thiết kế menu như thế này.Trình đơn radial android có nút bấm?
Tôi đã thử hoạt ảnh nhưng nó không giữ lại vị trí của các nút.
nếu có ai đã thực hiện loại menu này, vui lòng hướng dẫn tôi.
Mọi trợ giúp sẽ được đánh giá cao.
Tôi muốn thiết kế menu như thế này.Trình đơn radial android có nút bấm?
Tôi đã thử hoạt ảnh nhưng nó không giữ lại vị trí của các nút.
nếu có ai đã thực hiện loại menu này, vui lòng hướng dẫn tôi.
Mọi trợ giúp sẽ được đánh giá cao.
Tôi nghĩ Rotatory wheel in android mà cung cấp cho bạn ý tưởng hoàn hảo về để tạo ra loại phụ tùng. Nó cũng hữu ích cho tôi. Cũng cần kiểm tra This Example.
http://code.google.com/p/radial-menu-widget/
Đó là tất cả những gì bạn cần .download jar và tích hợp nó như ví dụ trên liên kết ở trên
Gần đây tôi đã tạo ra trình đơn hình tròn này để thêm lên trong dự án gần đây của tôi. Dường như
gì bạn cần là để tạo ra một cái nhìn mới và vẽ quan điểm này, kiểm tra đầu vào người dùng (nơi ông được chạm), thiết kế một cơ chế phản hồi, ví dụ, theo quan điểm của tôi, nếu người dùng chạm bất kỳ của 5 vòng cung, màu nền thay đổi thành màu xanh da trời. Đây là mã của tôi cho onDrawMethod.
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
px = getMeasuredWidth()/2;
py = getMeasuredHeight();
initial = 144;
finalangle = 252;
centerCircleradius = 30;
middleCircleRadius = 140;
int init, fina;
init = 160;
fina = 360;
finalOVal.set(px-middleCircleRadius-4, py-middleCircleRadius-4, px+middleCircleRadius+4, py+middleCircleRadius+4);
middleOval.set(px-middleCircleRadius, py-middleCircleRadius, px+middleCircleRadius, py+middleCircleRadius);
while(init<fina)
{
circlePaint.setColor(colors[i]);
canvas.drawArc(finalOVal,init,10,false, circlePaint);
i++;
if(i>=colors.length)
{
i=0;
}
init = init + 10;
}
canvas.drawArc(middleOval, 180, 180, false, pencil);
midInitial = 180;
i=0;
//Creating the first Arc
if(arcTouched[0])
{
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
else
{
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
canvas.drawBitmap(bitmap.get(0), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
midInitial+=36;
if(arcTouched[1])
{
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
else
{
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
canvas.drawBitmap(bitmap.get(1), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
midInitial+=36;
if(arcTouched[2])
{
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
else
{
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
canvas.drawBitmap(bitmap.get(2), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
midInitial+=36;
//Creatring the second Arc
if(arcTouched[3])
{
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
else
{
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
canvas.drawBitmap(bitmap.get(3), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
midInitial+=36;
if(arcTouched[4])
{
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
else
{
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
}
canvas.drawBitmap(bitmap.get(4), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
canvas.drawCircle(px, py-10, 40, pencil);
canvas.drawCircle(px, py-10, 39, smallCircleCore);
canvas.drawCircle(px, py-10, 35, bigArc);
canvas.drawCircle(px, py-10, 20, smallCircleCore);
canvas.drawCircle(px, py-10, 15, bigArc);
canvas.drawLine(px-8, py-10, px+8, py-10, lineCore);
canvas.save();
}
Một số tham chiếu mà bạn có thể cần.
bitmap -> là một ArrayList chứa hình ảnh
arcToched [] -> là một mảng định nghĩa nền cho hồ quang, các giá trị của mảng boolean này được sửa đổi trong onTouchEvent() phương pháp.
dòngCore, smallCircleCore ..... là các loại sơn.
Tôi biết đây không phải là cách tốt nhất và cũng không chuyên nghiệp. Tôi đã tạo menu này theo nhu cầu. Nó không thể mở rộng theo cách cho đến khi bạn thay đổi các phép tính góc.
Chế độ xem này được lấy cảm hứng từ Ứng dụng ghi chú ghi chú. Vấn đề duy nhất tôi phải đối mặt trong việc tạo ra quan điểm này là xác định vòng cung chạm vào. Các hình ảnh động duy nhất tôi sử dụng ở đây là giống như một lần nữa Ghi chú (một trong đó menu tròn kéo dài hơn một chút so với kích thước nhất định sau đó trở lại bình thường).
Tham khảo link này http://stackoverflow.com/questions/10222730/how-to-create-a-rotating-wheel-control – Bhavika
[này] (http://stackoverflow.com/questions/6857505/create-a-circular-view-in-android) có thể hữu ích. Ngoài ra, hãy kiểm tra [ví dụ này] (http://www.codeproject.com/Articles/146145/Android-3D-Carousel). –
Bạn đã tìm ra giải pháp chưa? –