博客
关于我
Android仿QQ微信开场导航以及登陆界面
阅读量:798 次
发布时间:2023-03-29

本文共 4114 字,大约阅读时间需要 13 分钟。

微信的UI界面设计在开发者中备受关注,尤其是其开场功能介绍和动画效果。以下是基于实际开发经验的详细解析和实现方法。

1. 开场欢迎动画

微信的开场动画采用了延迟加载的方式,通过Handler控制页面跳转。具体实现方式如下:

public class WelcomeA extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.strat);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(WelcomeA.this, WhatsnewPagesA.class));
WelcomeA.this.finish();
}
}, 2000);
}
}

2. 主要功能介绍界面

该界面主要使用ViewPager实现图片浏览,支持左右滑动浏览,并通过小圆点导航实现页面切换。核心代码如下:

public class WhatsnewPagesA extends Activity {
private ViewPager viewPager;
private ImageView[] imageViews;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater inflater = getLayoutInflater();
pageViews = new ArrayList<>();
pageViews.add(inflater.inflate(R.layout.viewpager01, null));
// 其他页面加载类似方式
viewPager = (ViewPager) inflater.inflate(R.layout.viewpagers, null).findViewById(R.id.guidePagers);
viewPoints = (ViewGroup) inflater.inflate(R.layout.viewpagers, null).findViewById(R.id.viewPoints);
// 初始化小圆点
imageViews = new ImageView[pageViews.size()];
for (int i = 0; i < pageViews.size(); i++) {
ImageView imageView = new ImageView(WhatsnewPagesA.this);
imageView.setLayoutParams(new LayoutParams(20, 20));
imageView.setPadding(5, 0, 5, 0);
imageViews[i] = imageView;
if (i == 0) {
imageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused));
} else {
imageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));
}
viewPoints.addView(imageViews[i]);
}
viewPager.setAdapter(new NavigationPageAdapter());
viewPager.setOnPageChangeListener(new NavigationPageChangeListener());
setContentView(viewPictures);
}
}

3. 动画效果实现

登录界面的动画效果通过TranslateAnimation实现,分别控制左右两幅图片的移动:

public class WhatsnewAnimationA extends Activity {
private ImageView img_left, img_right;
private AnimationSet animLeft, animRight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.whatnew_animation);
img_left = (ImageView) findViewById(R.id.doorpage_left);
img_right = (ImageView) findViewById(R.id.doorpage_right);
// 创建并开始动画
animLeft = new AnimationSet(true);
TranslateAnimation transLeft = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, -1f,
Animation.RELATIVE_TO_SELF, 0f
);
transLeft.setDuration(2000);
animLeft.addAnimation(transLeft);
animLeft.setFillAfter(true);
img_left.startAnimation(transLeft);
transLeft.startNow();
animRight = new AnimationSet(true);
TranslateAnimation transRight = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 1f,
Animation.RELATIVE_TO_SELF, 0f
);
transRight.setDuration(2000);
animRight.addAnimation(transRight);
animRight.setFillAfter(true);
img_right.startAnimation(transRight);
transRight.startNow();
}
}

4. 登录界面

登录界面采用简单的布局设计,代码如下:

public class LoginPageA extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
// 其他布局和逻辑
}
}

注意事项

  • 延迟处理:在微信的开场动画中,通过Handler控制页面跳转,确保在指定时间后自动转换。
  • ViewPager优化:通过ViewPager和适配器实现无限循环浏览功能,并结合小圆点导航实现切换。
  • 动画效果:使用TranslateAnimation分别控制图片的移动,确保动画流畅且符合用户预期。
  • 布局简洁:登录界面采用简洁布局,突出核心功能,避免过多复杂元素。
  • 以上实现方法可以根据具体需求进行调整和优化,适用于类似项目的导航界面设计。

    转载地址:http://qmhfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现快速排序(附完整源码)
    查看>>
    Objective-C实现快速排序(附完整源码)
    查看>>
    Objective-C实现快速排序算法(附完整源码)
    查看>>
    Objective-C实现恩尼格玛密码机算法(附完整源码)
    查看>>
    Objective-C实现感知哈希算法(附完整源码)
    查看>>
    Objective-C实现感知哈希算法(附完整源码)
    查看>>
    Objective-C实现截留雨水问题的动态编程方法算法(附完整源码)
    查看>>
    Objective-C实现截留雨水问题的蛮力方法的算法(附完整源码)
    查看>>
    Objective-C实现打印10000以内的完数(附完整源码)
    查看>>
    Objective-C实现打印1000以内的水仙花数(附完整源码)
    查看>>
    Objective-C实现打印九九乘法表(附完整源码)
    查看>>
    Objective-C实现打印从 0 到 n 的卡特兰数算法(附完整源码)
    查看>>
    Objective-C实现打印函数调用堆栈( 附完整源码)
    查看>>
    Objective-C实现打印月份的日历算法(附完整源码)
    查看>>
    Objective-C实现打印杨辉三角(附完整源码)
    查看>>
    Objective-C实现打印某年的历法日期(附完整源码)
    查看>>
    Objective-C实现打印魔方矩阵(附完整源码)
    查看>>
    Objective-C实现打格点算法(附完整源码)
    查看>>
    Objective-C实现批量修改文件类型算法(附完整源码)
    查看>>
    Objective-C实现找出一个数的质因数primeFactors算法(附完整源码)
    查看>>