我正在创建一个活动,其中信息显示在Webview中,此活动可通过菜单访问。 我喜欢照顾视觉方面,并且与Activity的交互是流动的,但是webview的信息需要一段时间才能加载,这是正常的,但我不喜欢在接口的其余部分已经结束时突然出现。对我来说,解决方案是webview的信息准备出现,慢慢显示,看起来很优雅,当我使用FadeIn动画时它就在这里。
问题是:当我第一次启动应用程序时,访问菜单,从此到我的Activity,动画无法启动,或者看起来不应该。如果我再次返回菜单并访问我的活动一切正常,看起来不错。这就像保留缓存或其他东西。
这是我的代码:
public class RazonamientoVerbal extends Fragment {
private PagerSlidingTabStrip tabs;
private ViewPager pager;
private ContactPagerAdapter adapter;
View v;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
v = inflater.inflate(R.layout.rv_menu_layout, container, false);
ImageView iv_flechaderecha = (ImageView) v.findViewById(R.id.iv_flechaderecha);
iv_flechaderecha.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewPager vp=(ViewPager) getActivity().findViewById(R.id.pager);
vp.setCurrentItem(1);
}
});
tabs = (PagerSlidingTabStrip) v.findViewById(R.id.tabs);
pager = (ViewPager) v.findViewById(R.id.pager);
adapter = new ContactPagerAdapter();
pager.setAdapter(adapter);
tabs.setViewPager(pager);
return v;
}
private void iniciarLayout(final WebView wv) {
final Animation fadeIn = AnimationUtils.loadAnimation(this.getActivity(), R.anim.fadein);
wv.setVisibility(View.VISIBLE);
wv.startAnimation(fadeIn);
}
public class ContactPagerAdapter extends PagerAdapter implements PagerSlidingTabStrip.IconTabProvider {
private final int[] ICONS = {R.drawable.ic_launcher_gplus, R.drawable.ic_launcher_gmail,
R.drawable.ic_launcher_gmaps, R.drawable.ic_launcher_chrome, R.drawable.ic_launcher_gplus, R.drawable.ic_launcher_gmail,
R.drawable.ic_launcher_gmaps, R.drawable.ic_launcher_chrome, R.drawable.ic_launcher_gplus, R.drawable.ic_launcher_gmail,
R.drawable.ic_launcher_gmaps, R.drawable.ic_launcher_chrome, R.drawable.ic_launcher_gplus, R.drawable.ic_launcher_gmail,
R.drawable.ic_launcher_gmaps, R.drawable.ic_launcher_chrome};
public ContactPagerAdapter() {
super();
}
@Override
public int getCount() {
return ICONS.length;
}
@Override
public int getPageIconResId(int position) {
return ICONS[position];
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// looks a little bit messy here
final int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, getResources()
.getDisplayMetrics());
final WebView wv = new WebView(getActivity());
wv.setVisibility(View.INVISIBLE);
wv.setPadding(padding, padding, padding, padding);
if (position == 0){
wv.loadUrl("file:///android_asset/ic_conjuntos.html");
}else if (position != 0){
wv.loadUrl("file:///android_asset/lectura_5_preguntas_2.html");}
wv.setScrollBarStyle(View.GONE);
wv.setBackgroundColor(0x00000000);
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(wv, url);
RazonamientoVerbal rv = new RazonamientoVerbal();
wv.postDelayed(new Runnable() {
@Override
public void run() {
iniciarLayout(wv);
}
},1000);
}
});
container.addView(wv, 0);
return wv;
}
@Override
public void destroyItem(ViewGroup container, int position, Object view) {
container.removeView((View) view);
}
@Override
public boolean isViewFromObject(View v, Object o) {
return v == ((View) o);
}
}
答案 0 :(得分:2)
在您的xml中,找到您的webview所在的位置,以及它的父级。例如,假设webview将以编程方式添加到LinearLayout中。
现在,如果你添加
android:animateLayoutChanges="true"
到xml中的LinearLayout,webview将在屏幕上添加淡入淡出动画。
这适用于以编程方式添加视图,如果您只是通过
设置网页浏览的可见性,它应该可以正常工作myWebView.setVisibility(View.VISIBLE);
or
myWebView.setVisibility(View.INVISIBLE);
这样,如果淡入淡出动画对你来说足够了,你就不需要考虑代码中的动画了。在您添加/删除视图时,Android会自动为您处理。
如果您在应用程序的视图中使用这种方式,视图生成和销毁将感觉非常流畅,没有样板代码。
答案 1 :(得分:1)
步骤1:在WebView之后放置一个视图,使其具有您想要的任何背景颜色。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp" >
<WebView
android:id="@+id/WV_PROPERTYRULES"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
<View
android:id="@+id/ViewFader"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF" />
注意:请确保您看到它涵盖了我们的视图。
步骤2:在您想要引起淡入淡出时调用该视图的动画。
private void FadeinmyWebView() {
View ViewFader = findViewById(R.id.ViewFader);
ObjectAnimator alpha_anim = ObjectAnimator.ofFloat(ViewFader, "alpha",
1f, 0).setDuration(3000);
alpha_anim.start();
}