仿微信-界面动画(1)

比较零碎的代码片段,主要讲述的是数据库的登录界面,以及页面的滑屏,以及一些有趣的动画效果.

若是你又足够的耐心.请细看

1.一个界面跳转至另外一个界面的延时效果是如何实现?(演示为1s的延时,参数单位是ms)

new Handler().postDelayed(new Runnable(){
@Override
public void run(){
Intent intent = new Intent (Activity1.this,Activity2.class);
startActivity(intent);
Activity1.this.finish();
}
}, 1000);

 

2.简单的跳转至一个网页

.Uri uri = Uri.parse("http://my.csdn.net/"); 
    Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
    startActivity(intent);

3.简单Dialog的创建

new AlertDialog.Builder(RegisterActivity.this)
.setIcon(getResources().getDrawable(R.drawable.login_error_icon))
.setTitle("注册错误")
.setMessage("微信帐号或者密码不能为空,\n请输入后再登录!")
.create().show();

4.数据库的创建以及用户登录依据数据库数据的检测

. MyDatabaseHelper myDatabaseHelper = = new MyDatabaseHelper(this, "weixin.db", null, 1);

. SQLiteDatabase database = myDatabaseHelper.getWritableDatabase();

. ContentValues values = new ContentValues();// 和hash表类似,存储数据,键值对形式

    values.put("username", mUser.getText().toString());
    values.put("password", mPassword.getText().toString());
    database.insert("user", null, values);

. 下面贴了一些检测的代码

. SQLiteDatabase database = myDatabaseHelper.getWritableDatabase();// 打开数据库的连接
String sql = "select * from user where username=? and password=?";
Cursor cursor = database.rawQuery(sql, new String[] {
mUser.getText().toString(),
mPassword.getText().toString() });
if (cursor.moveToFirst() == true) {
cursor.close();
Intent intent = new Intent(Login.this,
LoadingActivity.class);
startActivity(intent);
Toast.makeText(Login.this, "登录成功",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(Login.this, "没找到相对应的帐号密码",
Toast.LENGTH_SHORT).show();
}

5.无限循环式的ProgressBar

.style="?android:attr/progressBarStyleLarge"

6.ViewPager的使用案例

.使用样式如下图

.

.这类图有n个,如何使用ViewPage进行设置views[i]--代码如下

.private ViewPager mViewPager;

.private ImageView mPage0|1|2|3|4|5 ;

.private int currIndex = 0;

.onCreat方法中的主要操作是ViewPager的设置适配器(适配器的配置完成了ViewPager本身的view的add)

.//将要分页显示的View装入数组中
        LayoutInflater mLi = LayoutInflater.from(this);
        View view1 = mLi.inflate(R.layout.whats1, null);
        View view2 = mLi.inflate(R.layout.whats2, null);
        View view3 = mLi.inflate(R.layout.whats3, null);
        View view4 = mLi.inflate(R.layout.whats4, null);
        View view5 = mLi.inflate(R.layout.whats5, null);
        View view6 = mLi.inflate(R.layout.whats6, null);
        
      //每个页面的view数据
        final ArrayList<View> views = new ArrayList<View>();
        views.add(view1);
        views.add(view2);
        views.add(view3);
        views.add(view4);
        views.add(view5);
        views.add(view6);
        
        //填充ViewPager的数据适配器
        PagerAdapter mPagerAdapter = new PagerAdapter() {

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}

@Override
public int getCount() {
return views.size();
}


@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager)container).removeView(views.get(position));
}



@Override
public Object instantiateItem(View container, int position) {
((ViewPager)container).addView(views.get(position));
return views.get(position);
}
};

mViewPager.setAdapter(mPagerAdapter);

.

.------图上的一些点其实是ImageView,在进行Page的改变监听的时候会进行image的改变,在本文中就不贴出来了

.若是有小伙伴想研究这个ViewPager,可以阅览(待定)

7.实现界面的裂开,进入下一个界面的动画效果

.效果图如下

.

.这个动画效果主要是靠AnimationSet来实现

.实现代码如下

.mLeft = (ImageView)findViewById(R.id.imageLeft);
        mRight = (ImageView)findViewById(R.id.imageRight);
        mText = (TextView)findViewById(R.id.anim_text);
        
        AnimationSet anim = new AnimationSet(true);
TranslateAnimation mytranslateanim = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,-1f,Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,0f);
mytranslateanim.setDuration(2000);
anim.setStartOffset(800);
anim.addAnimation(mytranslateanim);
anim.setFillAfter(true);
mLeft.startAnimation(anim);

AnimationSet anim1 = new AnimationSet(true);
TranslateAnimation mytranslateanim1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,+1f,Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,0f);
mytranslateanim1.setDuration(1500);
anim1.addAnimation(mytranslateanim1);
anim1.setStartOffset(800);
anim1.setFillAfter(true);
mRight.startAnimation(anim1);

AnimationSet anim2 = new AnimationSet(true);
ScaleAnimation myscaleanim = new ScaleAnimation(1f,3f,1f,3f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
myscaleanim.setDuration(1000);
AlphaAnimation myalphaanim = new AlphaAnimation(1,0.0001f);
myalphaanim.setDuration(1500);
anim2.addAnimation(myscaleanim);
anim2.addAnimation(myalphaanim);
anim2.setFillAfter(true);
mText.startAnimation(anim2);

new Handler().postDelayed(new Runnable(){
@Override
public void run(){
Intent intent = new Intent (WhatsnewDoor.this,MainWeixin.class);
startActivity(intent);
WhatsnewDoor.this.finish();
}
}, 2300);

.

.上述代码实现了图片的左右分开,延时2.3秒进入下一个界面

.

8.启动时不弹出所谓的软键盘

.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

.

9.获取系统服务之Window窗口服务

.Display currDisplay = getWindowManager().getDefaultDisplay();//获取屏幕当前分辨率
        int displayWidth = currDisplay.getWidth();
        int displayHeight = currDisplay.getHeight();

.

未完待续.....

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt Quick是Qt框架的一部分,用于开发跨平台的图形界面应用程序。它提供了一套功能强大、易于使用的工具和组件,能够快速地创建现代化的用户界面。 高仿微信是指使用Qt Quick来实现一个与微信界面相似的应用程序。借助Qt Quick的强大功能,可以轻松实现微信中常见的界面元素和交互效果,包括聊天界面、联系人列表、朋友圈等。 Qt Quick使用QML语言编写界面,具有声明式编程的特点,使得开发界面更加直观和灵活。开发者可以通过编写QML代码来描述界面的外观和行为,而无需深入了解底层的图形编程。 除了QML之外,Qt Quick还提供了一组丰富的可重用组件,如按钮、文本框、列表视图等,开发者可以直接使用这些组件来快速构建界面。同时,Qt Quick还支持自定义组件的开发,开发者可以根据需要创建自己的独特组件。 在实现高仿微信过程中,可以利用Qt Quick的布局系统来构建复杂的界面布局,使用动画效果和过渡效果来增加用户体验,还可以通过Qt Quick提供的网络模块实现与服务器的通信,实现实时聊天功能。 总之,借助Qt Quick的强大功能和易用性,可以快速开发出高仿微信的应用程序,实现类似的界面和功能。无论是从界面还是从交互体验方面,Qt Quick都能满足开发者的需求,并帮助开发者更加高效地开发出优秀的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值