Мне любопытно узнать о типе износа, будь то круглый или квадратный, потому что на основе типа устройства я хочу сделать разные виды для круглого и квадратного. Из Этот пост я добрался до знаю, что в классе SDK-20 android.view.View
есть новый прослушиватель для определения типа устройства, используя это, я пытаюсь получить тип устройства, но ничего не печатается на logcat. Ниже приведен код, который я пробовал.
public class WearSplash extends Activity implements OnApplyWindowInsetsListener {
private WatchViewStub _stub = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wear_splash);
_stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
_stub.setOnApplyWindowInsetsListener(this);
_stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub mStub) {
// here on the basis of device type i want to inflate views.
}
});
}
@Override
public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
System.out.println(" in testing phase");
if (insets.isRound())
System.out.println("in round");
else
System.out.println("in square");
return null;
}
}
xml-файлы.
<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.WatchViewStub xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/watch_view_stub"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rectLayout="@layout/rect"
app:roundLayout="@layout/round"
tools:context="com.app.WearSplash"
tools:deviceIds="wear" >
</android.support.wearable.view.WatchViewStub>
Круглый:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.app.WearSplash"
tools:deviceIds="wear_round" >
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:contentDescription="@string/hello_world" />
</RelativeLayout>
Квадрат:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.app.WearSplash"
tools:deviceIds="wear_square" >
<ImageView
android:id="@+id/image"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:contentDescription="@string/hello_world"
android:background="@drawable/ic_launcher"/>
</LinearLayout>
Я новичок в разработке одежды, дайте мне знать, где я ошибаюсь. Руки помощи будут высоко оценены.
OnApplyWindowInsetsListener
в студии Android, он автоматически заполнился какView.OnApplyWindowInsetsListener
. Так что, пожалуйста, попробуйтеpublic class WearSplash extends Activity implements View.OnApplyWindowInsetsListener
вместоclass WearSplash extends Activity implements OnApplyWindowInsetsListener
. - person Harikrishnan   schedule 23.07.2014OnApplyWindowInsetsListener
без частиView.
. - person Harikrishnan   schedule 23.07.2014public WindowInsets onApplyWindowInsets(View v, WindowInsets insets)
срабатывает? - person Harikrishnan   schedule 23.07.2014findViewById(android.R.id.content).setOnApplyWindowInsetsListener(this);
сразу послеsetContentView
, а затем прокомментировать_stub.setOnApplyWindowInsetsListener(this);
, а затем попробовать запустить? Если получится сообщите. :) - person Harikrishnan   schedule 23.07.2014dispatchApplyWindowInsets(some_Window_insets_Object)
, следовательно, запуская метод. Почему бы не попробовать? - person Harikrishnan   schedule 23.07.2014return null
вonApplyWindowInsets
методе. Вам НЕОБХОДИМО либо вернуть объектinsets
(немодифицированный, либо измененный).return null;
приведет кNullPointerException
. - person Maciej Ciemięga   schedule 24.07.2014