gpt4 book ai didi

android - 如何为 Android 应用创建透明的演示屏幕?

转载 作者:IT老高 更新时间:2023-10-28 13:04:01 28 4
gpt4 key购买 nike

我正在尝试创建一个仅在用户首次安装我的应用程序时启动的半透明演示屏幕。以下是 Pulse News 应用的示例:

银河系

Example screenshot from Pulse News on Galaxy Nexus

Nexus One

enter image description here

我希望用户能够滑动浏览几个这样的透明演示页面,而不是“点击关闭”功能。

对于我的第一次尝试,我修改了 ViewPagerIndicator 中的一个示例图书馆。我在每个 View 寻呼机的 fragment 内的 ImageViews 中使用了半透明的 PNG。然后,我在“主要 Activity ”的 onCreate 方法中将其作为“演示 Activity ”启动。

问题:在背景中看不到“主要 Activity ”——它只是黑色的。我尝试了解决方案here ,但这并没有解决问题。

有没有更好的方法来创建这样的东西,还是我走在正确的轨道上?

我还有另一个相关问题,这取决于它是如何实现的。我试图覆盖文本和箭头,使它们指向背景中的特定 UI 组件。通过使用包含文本和箭头的 PNG,它可能无法在不同的设备上正确缩放。即,箭头不一定指向背景中正确的 UI 组件。有没有办法解决这个问题?

谢谢!

这是我第一次尝试的代码:

DemoActivity.java

public class DemoActivity extends FragmentActivity {
DemoFragmentAdapter mAdapter;
ViewPager mPager;
PageIndicator mIndicator;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo_activity);

mAdapter = new DemoFragmentAdapter(getSupportFragmentManager());

mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
//mPager.setAlpha(0);

UnderlinePageIndicator indicator = (UnderlinePageIndicator)findViewById(R.id.indicator);
indicator.setViewPager(mPager);
indicator.setFades(false);
mIndicator = indicator;
}

}

DemoFragmentAdapter.java

class DemoFragmentAdapter extends FragmentPagerAdapter {
protected static final int[] CONTENT = new int[] { R.drawable.demo1, R.drawable.demo2, R.drawable.demo3, R.drawable.demo4};

private int mCount = CONTENT.length;

public DemoFragmentAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
return DemoFragment.newInstance(CONTENT[position % CONTENT.length]);
}

@Override
public int getCount() {
return mCount;
}

public void setCount(int count) {
if (count > 0 && count <= 10) {
mCount = count;
notifyDataSetChanged();
}
} }

DemoFragment.java

public final class DemoFragment extends Fragment {
private static final String KEY_CONTENT = "TestFragment:Content";

public static DemoFragment newInstance(int content) {
DemoFragment fragment = new DemoFragment();
fragment.mContent = content;
return fragment;
}

private int mContent;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
mContent = savedInstanceState.getInt(KEY_CONTENT);
}
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

ImageView image = new ImageView(getActivity());
image.setBackgroundResource(mContent);

LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layout.setGravity(Gravity.CENTER);
layout.addView(image);

return layout;
}

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(KEY_CONTENT, mContent);
}
}

最佳答案

将您的演示信息放在不同的 Activity 中,并为其指定以下主题。

<style name="Transparent" parent="@android:style/Theme.NoTitleBar">
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>

如果您使用 ActionBarSherlock,请将 parent 更改为 @style/Theme.Sherlock

这会给你一个透明的 Activity ,所以你将能够看到它下面的 Activity 。

现在我猜你也想要一个半透明的背景。

在(您的透明 Activity 的)xml 布局中添加:

android:background="#aa000000" 

最后 6 位数字定义颜色:000000 为黑色。

前2个定义不透明度:00是100%透明,ff是100%不透明。所以选择介于两者之间的东西。

关于android - 如何为 Android 应用创建透明的演示屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12013334/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com