我的应用程序主屏幕包含图像的网格视图.当用户选择图像时,使用共享元素转换开始细节活动,该共享元素转换将所选择的网格图像动画化为位于细节活动中的CardView中的配对图像.
升级我的详细视图XML布局以包含CoordinatorLayout以及CollapsingToolbarLayout后,共享元素转换将图像视图移动到详细活动中的错误位置("enter"活动).如果在包含目标图像视图的CardView上方没有CollapsingToolBarLayout,框架似乎会将整个AppBarLayout和内部CollapsingToobarLayout的偏移量和动画放大到图像的大致位置.
通过将activityView(带有transitionName)添加到activity_detail.xml中的3个CardView中的任何一个,可以在Chris Banes的cheesesquare示例应用程序中复制该问题:
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:transitionName="sharedImage" />
Run Code Online (Sandbox Code Playgroud)
然后在CheeseListFragment.java中的onBindViewHolder中设置共享元素转换,如下所示:
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mBoundString = mValues.get(position);
holder.mTextView.setText(mValues.get(position));
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
Intent intent = new Intent(context, CheeseDetailActivity.class);
intent.putExtra(CheeseDetailActivity.EXTRA_NAME, holder.mBoundString);
holder.mImageView.setTransitionName("sharedImage");
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(
getActivity(v.getContext()),
holder.mImageView,
"sharedImage");
ActivityCompat.StartActivity((MyActivity) context, intent, options.toBundle());
}
});
Glide.with(holder.mImageView.getContext())
.load(Cheeses.getRandomCheeseDrawable())
.fitCenter()
.into(holder.mImageView);
}
Run Code Online (Sandbox Code Playgroud)
如果运行应用程序,并单击奶酪列表项,您将了解过渡动画如何将图像移动到目标活动视图中的错误(太高)偏移.动画完成后,图像将"扭曲"到正确的位置.
任何关于可能的解决方法的想法都会非常受欢迎.
animation android shared-element-transition android-coordinatorlayout android-collapsingtoolbarlayout
当我使用 Fabric Crashlytics 时问题就出现了,现在使用 Firebase Crashlytics 最新版本它仍然存在。一切都基于官方 NDK 文档实现并且每次构建后都会正确上传符号 (cSYM) 文件。我设法产生了一个故意崩溃来比较墓碑并报告本机崩溃回溯,结果如下:
Firebase 控制台上报告的崩溃:
崩溃保存的墓碑文件:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/klteduosxx/klte:5.0/LRX21T/G900FDXXU1BOJ1:user/release-keys'
Revision: '14'
ABI: 'arm'
pid: 652, tid: 1160, name: AsyncTask #5 >>> com.mnhaami.pasaj <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: 'stack corruption detected'
r0 00000000 r1 00000488 r2 00000006 r3 00000000
r4 656f3db8 r5 00000006 r6 00000016 r7 0000010c
r8 …Run Code Online (Sandbox Code Playgroud) 有 2 种方法可以通过DialogFragment.
onCreateDialog并返回对话框AlertDialog.Builder。onCreateView。我们注意到,如果我们覆盖onCreateDialog,之前显示的软键盘将不会被隐藏。
但是,如果我们覆盖onCreateView,之前显示的软键盘将被隐藏。
隐藏软键盘不是我们想要的行为。我们希望软键盘保持原样。
onCreateDialog但是,由于DialogFragment 中提到的 ViewPager 限制 - IllegalStateException: Fragment does not have a view ,我们无法使用该方法。简而言之,如果您需要ViewPager在对话框中很好地工作,则无法使用onCreateDialog.
如果我们使用onCreateView,我们可以实现除了“不隐藏软键盘”之外的一切。
您知道为什么覆盖onCreateView创建自定义对话框会隐藏键盘吗?我们怎样才能防止这种行为呢?
我的对话框风格是:
<style name="CustomDialog" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="android:windowNoTitle">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)
ColorDialogFragment.java:
public class ColorDialogFragment extends DialogFragment {
private TabLayout tabLayout;
private ViewPager viewPager;
private ColorFragmentPagerAdapter colorFragmentPagerAdapter;
public static ColorDialogFragment newInstance() {
ColorDialogFragment colorDialogFragment …Run Code Online (Sandbox Code Playgroud) 我想在名为MessagesonState和Idcolumns 的表上创建部分索引。WHERE通常,这可以通过添加一个子句来创建索引语句来完成,如官方文档中所述。正确的 SQLite 语句是:
CREATE INDEX `index_Messages_State_Id` ON `Messages` (`State`, `Id`) WHERE State = -2
Run Code Online (Sandbox Code Playgroud)
由于我目前使用 Room 作为 ORM,因此我不知道如何使用 Room 语法声明部分索引。
这是我的Messages表的简要说明:
@Entity(tableName = "Messages")
public class Message implements Parcelable {
@PrimaryKey
@SerializedName("i")
@ColumnInfo(name = "Id")
private long mId;
@SerializedName("t")
@ColumnInfo(name = "Type")
private byte mType;
@SerializedName("s")
@ColumnInfo(name = "State")
private byte mState;
....
}
Run Code Online (Sandbox Code Playgroud)
提前致谢。
android ×4
android-collapsingtoolbarlayout ×1
android-ndk ×1
android-room ×1
animation ×1
crashlytics ×1
firebase ×1
indexing ×1
sqlite ×1