我想要实现的是具有类似对话框透明度的活动,其中RelativeLayout内容的可见性为100%.这是activity的xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="50dip"
android:layout_marginLeft="8dip"
android:layout_marginRight="8dip"
android:layout_marginTop="50dip">
(...)
</RelativeLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这很明显:
<activity
android:name="com.acentic.rcontrol.activities.MyActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
Run Code Online (Sandbox Code Playgroud)
现在背景仍然可见,我做错了什么?
---编辑:我补充说
android:background="#c0000000"
Run Code Online (Sandbox Code Playgroud)
到LinearLayout.现在背景是我想要的透明,但RelativeLayout里面的TextViews也是透明的......如何改变呢?
我想知道是否有任何方法可以在活动/片段和对话框之间使用共享元素?
我有一个包含对话框的项目,我想在Activity的视图层次结构中的ImageView与GalleryDialog中的相关ImageView之间进行转换.
我搜索了一下,发现这个链接:
其中描述了使用对话框主题活动的工作流程.我想知道我是否可以在不使用额外活动的情况下执行此操作并将数据意图传递给该活动.
我有一个活动,其中包含一个工具栏中的图像,以及一个活动,其主题就像一个具有相同图像的对话框.这些是布局文件:
my_activity.xml:
...
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/my_image"
android:layout_width="40dp"
android:layout_height="40dp"
android:scaleType="centerCrop"
android:src="@drawable/my_drawable"
android:transitionName="@string/my_image_transition"
app:riv_oval="true" />
...
Run Code Online (Sandbox Code Playgroud)
my_dialog_activity.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@id/my_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/my_drawable"
android:tint="@color/accent"
android:transitionName="@string/my_image_transition" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
通过在清单中应用此主题,对话框活动变为对话框:
<style name="MyDialogActivity" parent="Theme.AppCompat.Light.Dialog.MinWidth">
<item name="windowNoTitle">true</item>
<item name="android:windowMinWidthMajor">@dimen/abc_dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@dimen/abc_dialog_min_width_minor</item>
</style>
Run Code Online (Sandbox Code Playgroud)
活动和对话框看起来都是我希望它们看起来的样子.
现在我想用这些ImageView实现共享元素动画:当用户点击第一个活动的图像时,它必须增长并移动到屏幕中间,以便它适合更大的对话框图像.
所以我写了这段代码:
Intent intent = new Intent(MyActivity.this, MyDialogActivity.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
MyActivity.this, v, getString(R.string.my_image_transition)
);
startActivityForResult(intent, 999, options.toBundle());
} else {
startActivityForResult(intent, 999);
}
Run Code Online (Sandbox Code Playgroud)
动画确实发生了,但移动的图像仅在对话框区域内可见.因此,您会看到来自对话框左上角的图像,但您没有看到它从对话框外的第一个活动移动.
这是一个HTML版本,它应该是什么样子以及它目前的样子:https://jsfiddle.net/wutqdh9d/1/