Đây là cách tôi giải quyết nó. Nó có thể không phải là cách tốt nhất nhưng nó hoạt động. Nếu có ai có giải pháp tốt hơn, vui lòng chỉnh sửa bài đăng này hoặc tạo bài đăng mới.
Trước tiên, tôi có thể vẽ được đối tượng tròn.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#eeffffff" />
<corners android:bottomRightRadius="200dip"
android:bottomLeftRadius="200dip"
android:topRightRadius="200dip"
android:topLeftRadius="200dip"/>
</shape>
Sau đó, trong bố cục của tôi, tôi cần phải có các dấu chấm theo chiều dọc. Nhưng cũng có thể tạo phiên bản theo chiều ngang.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<RelativeLayout
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="15dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:id="@+id/dotlayout"
android:orientation="vertical">
</LinearLayout>
</RelativeLayout>
<android.support.wearable.view.GridViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pager">
</android.support.wearable.view.GridViewPager>
</RelativeLayout>
Tôi đã cố gắng tạo các dấu chấm tương tự nhất có thể với phiên bản Google. Và tôi nhận được nó khá gần nhưng không hoàn hảo vì khoảng cách giữa các chấm là một hoặc hai điểm ảnh. Tôi đã sử dụng các nút vào lúc này nhưng nó có thể là bất kỳ quan điểm cho rằng bạn có thể làm tròn có lẽ hình ảnh sẽ tốt hơn:
tôi đã thêm các dấu chấm để tôi dotlayout
for(int i = 0; i < numberOfDots; i++){
Button b = new Button(this);
configDot(b, 4, 2);
dotLayout.addView(b);
}
Hãy nhớ để làm cho các nút khởi động lớn:
configDot((Button) dotLayout.getChildAt(0), 6, 1);
Và phương pháp Config:
private void configDot(Button b, int size, int margin){
b.setBackground(getResources().getDrawable(R.drawable.roundbutton));
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(getPxFromDp(size), getPxFromDp(size));
p.gravity = Gravity.CENTER_HORIZONTAL;
p.setMargins(0, margin, 0, margin);
b.setLayoutParams(p);
}
private int getPxFromDp(int dp){
return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
}
Trên máy nhắn tin của tôi, tôi đã thêm onPageChangeListener
Nơi tôi định cấu hình lại tất cả các chế độ xem để có kích thước chính xác.
pager.setOnPageChangeListener(new GridViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, int i2, float v, float v2, int i3, int i4) {}
@Override
public void onPageSelected(int i, int i2) {
for(int j = 0; j < dotLayout.getChildCount(); j++){
configDot((Button) dotLayout.getChildAt(j), 4, 2);
}
if(dotLayout.getChildCount() > i) {
configDot((Button) dotLayout.getChildAt(i), 6, 1);
}
}
@Override
public void onPageScrollStateChanged(int i) {}
});
Đây là những gì nó trông giống như:
Không hoàn toàn chắc chắn sẽ giúp tôi có được toàn bộ con đường. Tôi vẫn không biết cách tạo những vòng tròn nhỏ. Không chắc chắn nếu có một điều khiển mà tôi có thể sử dụng trông giống như các vòng tròn thông báo. Tôi đã thêm một hình ảnh vào bài đăng gốc của mình để làm rõ. –