app:showAsAction="never" <!--Эта строчка означает, что "значок меню" никогда показан не будет-->app:showAsAction="always"getFragmentSupportManager() вместо getFragmentManager().beginTransaction()Fragment profileFragment = new Fragment();Fragment profileFragment = new ProfileFragment();И сам layout файл:
R.id.mainLayout? Это FrameLayout или fragment, находящийся внутри layout-а активности?public SpriteBatch batch, там даже модификатор доступа не стоит, то есть доступ в пределах пакета.SharedPreferences или БД, но они легко будут обходиться переустановкой приложения или сменой даты на устройстве).Drawable first = imageViewFirst.getDrawable();
Drawable second = imageViewSecond.getDrawable();
Drawable.ConstantState stateFirst = first.getConstantState();
Drawable.ConstantState stateSecond = second.getConstantState();
if(stateFirst.equals(stateSecond)) {
// ваш код
}Drawable imageViewDrawable = imageViewFirst.getDrawable();
Drawable.ConstantState imageViewDrawableState =imageViewDrawable.getConstantState();
Drawable fromResourcesDrawable = getResources().getDrawable(R.drawable.my_drawable);// ваш ресурс
Drawable.ConstantState fromResourcesState = fromResourcesDrawable.getConstantState();
if(imageViewDrawable.equals(fromResourcesState)) {
// ваш код
} Android Mpermissions нужно также проверять во время выполнения.public static final int NUMBER_OF_REQUEST = 23401;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int canRead = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
int canWrite = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (canRead != PackageManager.PERMISSION_GRANTED || canWrite != PackageManager.PERMISSION_GRANTED) {
//Нужно ли нам показывать объяснения , зачем нам нужно это разрешение
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
//показываем объяснение
} else {
//просим разрешение
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE}, NUMBER_OF_REQUEST);
}
} else {
//ваш код
}
}@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case NUMBER_OF_REQUEST: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.e("TAG", "Пользователь дал разрешение");
} else {
Log.e("TAG", "Пользователь отклонил разрешение");
}
return;
}
}
} layout вашей Activity (одна в папке layout(для смартфонов), а другая в папке - layout-large (для планшетов)).В layout для планшетов вставляете не только fragment с вашим списком вариантов, но и FrameLayout для отображения информации по объекту из списка.Activity по нажатию на элемент списка вариантов пишите примерно такой код:if (myFrameLayout != null) { // FrameLayout существует только в layout для планшетов
showInforamtionAtDetailFragment(); //поэтому если он существует - показываем информацию во фрагменте
else {
openDetailActivity(); // иначе - у нас смартфон, потому что layout не существует;открываем отдельную Activity
} AppCompat 23.2.0.VectorDrawableCompat.Gradle вашего проекта,exception, как и у вас.Gradle wrapper >= 2.0):android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}Gradle wrapper == 1.5 ; скорее всего он вам и подойдёт)android {
defaultConfig {
// Stops the Gradle plugin’s automatic rasterization of vectors
generatedDensities = []
}
// Flag to tell aapt to keep the attribute ids around
aaptOptions {
additionalParameters "--no-version-vectors"
}
}<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_search"/>app:srcCompat="@drawable/ic_search"R.java былtoolbar, в котором делаем, что нужно:appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
if (isCollapsed(verticalOffset)) {
//set status bar color your color
} else {
// set status bar color transparent
}
}
});
private boolean isCollapsed(int offset) {
return offset == 0 || offset <= toolbar.getHeight();
} .3ds в расширение.obj..obj - легко ищется поисковиком..obj конвертируют в более дружественный для runtime и меньший по весу формат .g3db.