是否可以通过编程将xml属性transitionName
设置为Toolbar
标题,然后使用将该属性用于动画ActivityOptionsCompat
?
这就是我声明我的方式Toolbar
:
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
myToolbar.setTitle("title");
这是我的xml声明:
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primary_color"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
为了添加动画,我必须使用以下代码:
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
albumCoverImageView, // The view which starts the transition (Should be myToolbar title)
transitionName // The transitionName of the view
);
ActivityCompat.startActivity(activity, intent, options.toBundle());
如何将Toolbar
(TextView
?)标题传递给makeSceneTransitionAnimation
函数?
是的,这是可能的:
扩展的类ViewCompat
能够调用setTransitionName(String name)
例如:
myToolbar.setTransitionName("ToolbarTransition");
更新 似乎您专门尝试共享标题,因此我将执行以下操作:
MainActivity的示例xml:
<?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.divshark.toolbaranimation.MainActivity"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<android.support.v7.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="@android:color/white"
android:text="Activity Title" />
</android.support.v7.widget.Toolbar>
<android.support.v7.widget.AppCompatButton
android:id="@+id/btnNext"
android:text="Next"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
然后在“活动”参考中,该视图:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
final AppCompatTextView mTextView = (AppCompatTextView) mToolbar.findViewById(R.id.tv_title);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mTextView.setTransitionName("SimpleTransition");
}
AppCompatButton mBtnNext = (AppCompatButton) findViewById(R.id.btnNext);
mBtnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent secondActivity = new Intent(MainActivity.this, SecondActivity.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(MainActivity.this, mTextView, mTextView.getTransitionName());
startActivity(secondActivity, options.toBundle());
} else {
startActivity(secondActivity);
}
}
});
}
}
然后在您的SecondActivity中:
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
AppCompatTextView mTextView = (AppCompatTextView) findViewById(R.id.tv_title);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mTextView.setTransitionName("SimpleTransition");
}
}
}
使用此xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_centerInParent="true"
android:textColor="@android:color/black"
android:text="Activity Title" />
</RelativeLayout>
如您所见,您可以使用ViewCompat
视图以编程方式调用setTransitionName(String name)
祝您好运,编码愉快!
我有一个excel工作表(File1.xls)。在处理File1.xls数据之前,我需要在其中添加列标头,或者创建一个带有列标头的新excel文件(File2.xls),并将File1.xls数据复制到其中。 目前,我正在使用OleDbConnection从excel工作表中读取数据,并使用OleDbCommand,OleDbDataAdapter将其加载到Datatable中。但我找不到任何方法
问题内容: 我正在尝试使用导航栏(“后退”按钮,标题等)和选项卡栏(底部的工具栏)制作一个应用程序。我使用的是子视图,因此不必担心状态栏,导航栏,标签栏的高度等问题。但是我认为这给我带来了麻烦,因为我似乎无法弄清楚如何设置导航栏和标签栏。 这就是我所拥有的。我究竟做错了什么? AppDelegate.h AppDelegate.m ViewController.h ViewController.m
我想在qTip2工具提示中添加标题。目前我有以下代码: 这给了我一个带有简单工具提示的文本(http://beta.summonersindex.com/test.html)。我只是无法添加标题,如演示页面所示:http://qtip2.com/demos (“添加标题”)。我为此寻找了很多解决方案,但它们要么已经过时,要么不适合我。我希望你们能帮助我!谢谢:)
在我的activity_main.xml我有这个工具栏: 在清单中有
我正在尝试在Android上添加Wifi网络,我想知道如何连接到不广播其SSID的Wifi网络(它是否有空SSID或带有\0s的清晰SSID)。 这是我目前用于广播其SSID的Wifi网络的内容:
问题内容: 对于RealityKit的文档包括结构:,,和用于添加材料到。 或者,您可以在模型中加载带有附加材料的模型。 我想以编程方式添加自定义材料/纹理。如何在不向Reality Composer或其他3D软件的模型中添加材料的情况下即时实现这一目标? 问题答案: 已更新:2020年6月23日 。 目前,RealityKit 2.0中有4种类型的材料 : 简单材质 不发光材料 咬合材料 Vid