我在MainActivity.java中有这个:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupHomeScreen();
}
public void setupHomeScreen() {
File latestPic = getMostRecentSnappiePicture();
if(latestPic != null){
//display pic
LinearLayout layout = (LinearLayout) findViewById(R.id.mainLayout);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
layout.setBackground(Drawable.createFromPath(latestPic.getAbsolutePath()));
}
else{
layout.setBackgroundDrawable(Drawable.createFromPath(latestPic.getAbsolutePath()));
}
//hide tutorial
findViewById(R.id.howitworks).setVisibility(View.INVISIBLE);
}
else{
//show tutorial
findViewById(R.id.howitworks).setVisibility(View.VISIBLE);
new ShowcaseView.Builder(this)
.setTarget(new ActionViewTarget(this, ActionViewTarget.Type.HOME))
.setContentTitle("ShowcaseView")
.setContentText("This is highlighting the Home button")
.hideOnTouchOutside()
.build();
}
}
}
如您所见,在onCreate中,它调用setupHomeScreen并检查文件是否存在。如果它不存在,它会显示教程“howitworks”布局图像以及构建展示视图。
所以这一切都很好。唯一的问题是当showcaseView仍然存在时尝试离开活动,或者有时甚至在退出展示视图并尝试启动新活动后,出现此错误:ShowcaseView - width and height must be > 0
正如您在答案中所看到的,解决方案是仅在创建原始视图后在回调中创建展示视图,如下所示:
someView.post(new Runnable() {
@Override
public void run() {
// my ShowcaseView builder here
}
});
唯一的问题是,我不知道在哪里放这个,因为我的展示视图应该只显示来自getMostRecentSnappiePicture()的文件是否为空。那么如何将视图创建回调放入我的逻辑中以检查该文件是否为空?
答案 0 :(得分:0)
您好像是在突出显示“主页”按钮,而不是“如何使用”工具'视图。尝试切换线
.setTarget(new ActionViewTarget(this, ActionViewTarget.Type.HOME))
与
.setTarget(new ViewTarget(R.id.howitworks,this));
此外,以下视频可能有所帮助。这是关于如何在具有3个按钮的活动中使用ShowCaseView的20分钟教程。他正在声明一个onClickListener,他以编程方式更改了由showCaseView突出显示的TargetView
https://www.youtube.com/watch?v=3zdeFSBplps
视频采用西班牙语,但至少您可以按照步骤操作,因为他从头开始编写代码。