基于前两篇比较简单的实例做铺垫之后,这一篇我们来实现一个稍微复杂一点的引导界面的效果,当然也只是稍微复杂了一点,对于会的人来说当然还是so easy!正所谓会者不难,难者不会,大概说的就是这个意思了吧。好的,话不多说,回归正题。

这篇要实现的是一个仿微信的动画效果,虽然这种效果的实现在网上到处都有,但是我还是想站在中低端开发者的角度去告诉大家是如何实现的,当然实现的方式有很多,我也只是列出了我认为实现起来比较方便的一种方法,希望大家能够受用。

一、实现的效果图

有图才有真相,上图先:

点击按钮后出现动画效果,然后进入到另一个界面:

二 、程序的目录结构

三、具体的编码实现

1、 在主布局界面中加入ViewPager组件,以及底部的小点,activity_main.xml:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<RelativeLayout

xmlns:android
="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

       
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"

/> 
       
    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="24.0dip"
        android:orientation="horizontal"

       
        <ImageView
            android:id="@+id/page0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="5dip"
            android:src="@drawable/page_indicator_focused"

/> 
       
        <ImageView
            android:id="@+id/page1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="5dip"
            android:src="@drawable/page_indicator_unfocused"

/> 
       
        <ImageView
            android:id="@+id/page2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="5dip"
            android:src="@drawable/page_indicator_unfocused"

/> 
       
        <ImageView
            android:id="@+id/page3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="5dip"
            android:src="@drawable/page_indicator_unfocused"

/> 
       
        <ImageView
            android:id="@+id/page4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="5dip"
            android:src="@drawable/page_indicator_unfocused"

/> 
       
        <ImageView
            android:id="@+id/page5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="5dip"
            android:src="@drawable/page_indicator_unfocused"

/> 
    </LinearLayout
</RelativeLayout>

2、接着在guide_view01.xml等几个布局页面中添加引导界面要显示的图片和控件,因为这几个布局界面都大同小异,所以在这里我就不一一贴出来了吧,有需要的同学可以直接下载源码,guide_view01.xml:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml

version
="1.0"

encoding
="UTF-8"?> 
<RelativeLayout

xmlns:android
="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/w01"
    android:orientation="vertical"

       
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="35dp"
        android:gravity="center"
        android:text="@string/guide_text01"
        android:textColor="@color/TextColor"
        android:textSize="22sp"

/> 
</RelativeLayout>

3、然后是要实现动画效果的布局界面,guide_door.xml:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml

version
="1.0"

encoding
="UTF-8"?> 
<RelativeLayout

xmlns:android
="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

       
    <ImageView
        android:id="@+id/imageLeft"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:scaleType="fitXY"
        android:src="@drawable/w_left"

/> 
       
    <ImageView
        android:id="@+id/imageRight"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:scaleType="fitXY"
        android:src="@drawable/w_right"
        android:visibility="visible"

/> 
       
    <TextView
        android:id="@+id/anim_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="35dp"
        android:gravity="center"
        android:text="
n n微信,是一个生活方式n n "
        android:textColor="#fff"
        android:textSize="22sp"

/> 
</RelativeLayout>

4、最后是完成动画效果之后进入的布局界面,activity_other.xml:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
<?xml

version
="1.0"

encoding
="utf-8"?> 
<LinearLayout

xmlns:android
="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"

       
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="亲,可以开始你的微信生活了!"

/> 
</LinearLayout>

5、在这里还要创建一个xml文件来实现自定义按钮的效果,关于自定义按钮的效果实现我会在后面的文章中专题详细介绍,这里就不在赘述,start_weixin_btn.xml:

双击代码全选
1
2
3
4
5
6
7
<?xml

version
="1.0"

encoding
="utf-8"?> 
<selector

xmlns:android
="http://schemas.android.com/apk/res/android"
    <item

android:state_enabled
="true"

android:state_pressed
="true"
        android:drawable="@drawable/whatsnew_btn_pressed"

/>
<!--按下时的效果-->      
               
    <item

android:state_enabled
="true"

android:drawable
="@drawable/whatsnew_btn_nor"

/> 
<!--正常状态的效果-->
</selector>

6、布局界面已经讲解完毕,接下来让我们进行详细的代码讲解,ViewPager适配器代码,ViewPagerAdapter.java:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package

com.yangyu.myguideview02; 
       
import

java.util.ArrayList; 
       
import

android.support.v4.view.PagerAdapter; 
import

android.support.v4.view.ViewPager; 
import

android.view.View; 
       
/**
 *
@author yangyu
 *  
功能描述:ViewPager适配器,用来绑定数据和view
 */
public

class

ViewPagerAdapter
extends

PagerAdapter { 
           
    //界面列表 
    private

ArrayList<View> views; 
           
    public

ViewPagerAdapter (ArrayList<View> views){ 
        this.views
= views; 
    
              
    /**
     *
获得当前界面数
     */
    @Override
    public

int

getCount() { 
         if

(views !=
null)
             return

views.size(); 
         }       
         return

0

    
       
    /**
     *
初始化position位置的界面
     */
    @Override
    public

Object instantiateItem(View view,
int

position) { 
              
        ((ViewPager)
view).addView(views.get(position),
0); 
              
        return

views.get(position); 
    
           
    /**
     *
判断是否由对象生成界面
     */
    @Override
    public

boolean

isViewFromObject(View view, Object arg1) { 
        return

(view == arg1); 
    
       
    /**
     *
销毁position位置的界面
     */
    @Override
    public

void

destroyItem(View view,
int

position, Object arg2) { 
        ((ViewPager)
view).removeView(views.get(position));        
    
}

7、主程序入口activity类,MainActivity.java:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
package

com.yangyu.myguideview02; 
       
import

java.util.ArrayList; 
       
import

android.app.Activity; 
import

android.content.Intent; 
import

android.os.Bundle; 
import

android.support.v4.view.ViewPager; 
import

android.support.v4.view.ViewPager.OnPageChangeListener; 
import

android.view.LayoutInflater; 
import

android.view.View; 
import

android.view.View.OnClickListener; 
import

android.widget.Button; 
import

android.widget.ImageView; 
       
/**
 *
@author yangyu
 *  
功能描述:主程序入口activity
 */
public

class

MainActivity
extends

Activity { 
    //
定义ViewPager对象 
    private

ViewPager viewPager; 
       
    //
定义ViewPager适配器 
    private

ViewPagerAdapter vpAdapter; 
       
    //
定义一个ArrayList来存放View 
    private

ArrayList<View> views; 
       
    //定义各个界面View对象 
    private

View view1,view2,view3,view4,view5,view6; 
           
    //
定义底部小点图片 
    private

ImageView pointImage0, pointImage1, pointImage2, pointImage3,pointImage4, pointImage5; 
       
    //定义开始按钮对象 
    private

Button startBt; 
           
    //
当前的位置索引值 
    private

int

currIndex =
0
       
    @Override
    protected

void

onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
       
        initView(); 
       
        initData(); 
    
       
    /**
     *
初始化组件
     */
    private

void

initView() { 
        //实例化各个界面的布局对象  
        LayoutInflater
mLi = LayoutInflater.from(
this); 
        view1
= mLi.inflate(R.layout.guide_view01,
null); 
        view2
= mLi.inflate(R.layout.guide_view02,
null); 
        view3
= mLi.inflate(R.layout.guide_view03,
null); 
        view4
= mLi.inflate(R.layout.guide_view04,
null); 
        view5
= mLi.inflate(R.layout.guide_view05,
null); 
        view6
= mLi.inflate(R.layout.guide_view06,
null); 
                       
        //
实例化ViewPager 
        viewPager
= (ViewPager) findViewById(R.id.viewpager); 
       
        //
实例化ArrayList对象 
        views
=
new

ArrayList<View>(); 
       
        //
实例化ViewPager适配器 
        vpAdapter
=
new

ViewPagerAdapter(views); 
       
        //
实例化底部小点图片对象 
        pointImage0
= (ImageView) findViewById(R.id.page0); 
        pointImage1
= (ImageView) findViewById(R.id.page1); 
        pointImage2
= (ImageView) findViewById(R.id.page2); 
        pointImage3
= (ImageView) findViewById(R.id.page3); 
        pointImage4
= (ImageView) findViewById(R.id.page4); 
        pointImage5
= (ImageView) findViewById(R.id.page5); 
               
        //实例化开始按钮 
        startBt
= (Button) view6.findViewById(R.id.startBtn); 
    
       
    /**
     *
初始化数据
     */
    private

void

initData() { 
        //
设置监听 
        viewPager.setOnPageChangeListener(new

MyOnPageChangeListener()); 
        //
设置适配器数据 
        viewPager.setAdapter(vpAdapter); 
       
        //将要分页显示的View装入数组中       
        views.add(view1); 
        views.add(view2); 
        views.add(view3); 
        views.add(view4); 
        views.add(view5); 
        views.add(view6); 
               
                               
        //
给开始按钮设置监听 
        startBt.setOnClickListener(new

OnClickListener() { 
            @Override
            public

void

onClick(View v) { 
                 startbutton(); 
            
        }); 
    
       
    public

class

MyOnPageChangeListener
implements

OnPageChangeListener { 
        @Override
        public

void

onPageSelected(
int

position) { 
            switch

(position) { 
            case

0

                pointImage0.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused)); 
                pointImage1.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                break
            case

1

                pointImage1.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused)); 
                pointImage0.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                pointImage2.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                break
            case

2

                pointImage2.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused)); 
                pointImage1.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                pointImage3.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                break
            case

3

                pointImage3.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused)); 
                pointImage4.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                pointImage2.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                break
            case

4

                pointImage4.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused)); 
                pointImage3.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                pointImage5.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                break
            case

5

                pointImage5.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused)); 
                pointImage4.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused)); 
                break
            
            currIndex
= position; 
            //
animation.setFillAfter(true);// True:图片停在动画结束位置 
            //
animation.setDuration(300); 
            //
mPageImg.startAnimation(animation); 
        
       
        @Override
        public

void

onPageScrollStateChanged(
int

arg0) { 
       
        
       
        @Override
        public

void

onPageScrolled(
int

arg0,
float

arg1,
int

arg2) { 
       
        
    
           
    /**
     *
相应按钮点击事件
     */
    private

void

startbutton() {   
        Intent
intent =
new

Intent(); 
        intent.setClass(MainActivity.this,GuideViewDoor.class); 
        startActivity(intent); 
        this.finish(); 
      
           
}

PS:在这段代码中,有个地方需要注意,尽管我们写代码的时候一直很小心,但还是避免不了会犯一些低级的错误,以至于调试耽误了时间

双击代码全选
1
2
//实例化开始按钮 
startBt
= (Button) view6.findViewById(R.id.startBtn);

这是最后一个布局界面中的一个开始按钮,由于在findvViewById()方法前面忘记使用了view6来调用该方法,以至于模拟器报出空指针异常。

8、实现动画效果的入口activity类,在这个类中主要实现了点击开始按钮后实现一个动画效果来达到进入另一个界面的目的,该类中的主要使用了动画类。我会在后面的章节中以专题的形式来介绍动画这一块的类容,所以这里也不再赘述,GuideViewDoor.java:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package

com.yangyu.myguideview02; 
       
import

android.app.Activity; 
import

android.content.Intent; 
import

android.os.Bundle; 
import

android.os.Handler; 
import

android.view.animation.AlphaAnimation; 
import

android.view.animation.Animation; 
import

android.view.animation.AnimationSet; 
import

android.view.animation.ScaleAnimation; 
import

android.view.animation.TranslateAnimation; 
import

android.widget.ImageView; 
import

android.widget.TextView; 
       
/**
 *
@author yangyu
 *  
功能描述:实现动画效果的入口activity
 */
public

class

GuideViewDoor
extends

Activity { 
           
    //定义左右两张图片对象 
    private

ImageView mLeft,mRight; 
       
    //定义一个文本对象 
    private

TextView mText; 
       
    @Override
    public

void

onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.guide_door); 
               
        //实例化对象 
        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 (GuideViewDoor.
this,OtherActivity.class);             
                startActivity(intent);           
                GuideViewDoor.this.finish(); 
            
        },
2300); 
    
}

9、最后是另一个activity类,我为了只是达到进入到另一个界面的这种效果,所以代码比较简单,就是调用了一个layout布局页面,OtherActivity.java:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package

com.yangyu.myguideview02; 
       
import

android.app.Activity; 
import

android.os.Bundle; 
       
/**
 *
@author yangyu
 
功能描述:另一个activity
 */
public

class

OtherActivity
extends

Activity { 
       
    @Override
    protected

void

onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_other); 
    
}

10、最后大家别忘了在AndroidManifest.xml清单文件中为程序添加GuideViewDoor、OtherActivity这两个activity,否则会报出异常。

源码下载地址

来源: csdn   作者:yangyu20121224   

【Android UI设计与开发】第03期:引导界面(三)仿微信引导界面以及动画效果的更多相关文章

  1. 【Android UI设计与开发】6.底部菜单栏(三)使用Fragment+PopupWindow仿QQ空间最新版底部菜单栏

    直接看栗子吧,效果基本实现,界面微调和弹窗的优化,去做的话会很耗时说,暂时就酱紫了.上传效果动态图太大了,直接手机截图的效果图如下: 至于代码的实现主要就是自定义的菜单栏,和用 PopupWindow ...

  2. 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面

    [Android UI设计与开发]第05期:引导界面(五)实现应用程序只启动一次引导界面 jingqing 发表于 2013-7-11 14:42:02 浏览(229501) 这篇文章算是对整个引导界 ...

  3. 【转】【Android UI设计与开发】之详解ActionBar的使用,androidactionbar

    原文网址:http://www.bkjia.com/Androidjc/895966.html [Android UI设计与开发]之详解ActionBar的使用,androidactionbar 详解 ...

  4. 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面

    本系列文章都会以一个程序的实例开发为主线来进行讲解,以求达到一个循序渐进的学习效果,这样更能加深大家对于程序为什么要这样写的用意,理论加上实际的应用才能达到事半功倍的效果,不是吗? 最下方有源码的下载 ...

  5. 【Android UI设计与开发】第01期:引导界面(一)ViewPager介绍和使用详解

    做Android开发加起来差不多也有一年多的时间了,总是想写点自己在开发中的心得体会与大家一起交流分享.共同进步,刚开始写也不知该如何下手,仔细想了一下,既然是刚开始写,那就从一个软件给人最直观的感受 ...

  6. 【Android UI设计与开发】第04期:引导界面(四)仿人人网V5.9.2最新版引导界面

    这一篇我将会以人人网的引导界面为实例来展开详细的讲解,人人网的引导界面比较的新颖,不同于其他应用程序千篇一律的靠滑动来引导用户,而是以一个一个比较生动形象的动画效果展示在用户们的面前,有一种给人眼前一 ...

  7. 【转】【Android UI设计与开发】第07期:底部菜单栏(二)Fragment的详细介绍和使用方法

    原始地址:http://blog.csdn.net/yangyu20121224/article/category/1431917/1 由于TabActivity在Android4.0以后已经被完全弃 ...

  8. 【Android UI设计与开发】第17期:滑动菜单栏(二)开源项目SlidingMenu的示例

    通过上一篇文章的讲解,相信大家对于开源项目SlidingMenu都有了一个比较初步的了解(不了解的可以参考上 一篇文章),那么从这一章开始,博主将会以SlidingMenu为重心,给大家带来非常丰富的 ...

  9. 【Android UI设计与开发】3.引导界面(三)实现应用程序只启动一次引导界面

    大部分的引导界面基本上都是千篇一律的,只要熟练掌握了一个,基本上也就没什么好说的了,要想实现应用程序只启动一次引导界面这样的效果,只要使用SharedPreferences类,就会让程序变的非常简单, ...

随机推荐

  1. 光杆mdf文件的导入

    场景,准备学习SSAS的时候,按照教程在微软下载了示例数据库AdventureWorksDW2012,下载来才发现只有一个mdf文件. 正好今天群里有位兄弟也碰到差不多的问题,客户数据库里的ldf文件 ...

  2. Eclipse+Weblogic 12开发简单的Enterprise Application

    学到EJB方面的内容,遇到了很多问题,翻阅了无数遍Java EE和Weblogic的官方文档,在google上进行了无数次搜索都没有答案,可能我要找的答案太冷门.这一切都起源于Java EE官方文档里 ...

  3. 一个服务器多个tomcat的配置

    下面我们把配置的详细过程写在下面,以供参考:(此例以配置三个Tomcat为例)1. 下载apache-tomcat-7.0.63,下载下来的文件为apache-tomcat-7.0.63.zip.2. ...

  4. TiDB数据库 使用syncer工具同步实时数据

    mysql> select campaign_id ,count(id) from creative_output group by campaign_id; rows min 44.23 se ...

  5. 题解 P1312 【Mayan游戏】

    题面 过长已遮挡 题意 体面已经陈述题意(这题没有考语文阅读理解) 题解 ** 我还记得我曾经给自己找的锅,给某些人讲课的时候说过一句话:体面越长的题,越简单.** 这句话没有错,我会用接下来解决这道 ...

  6. mysql 错误2203 1061 及安装最后出现2003现象的解决办法

    错误描述 : 1.#2003-服务器没有响应MySQL无法启动 2.Can''t connect to MySQL server on ''localhost'' (10061) 3.ERROR 20 ...

  7. JSONP跨域和CORS跨域

    什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 同源策略 同源策略:域名.协议.端口均相同. 浏览器执行JavaScript脚本时,会检查这 ...

  8. oneinstack远程管理数据库

    本篇文章主要内容是本地工具连接数据非网页(网站)连接 如果你想使用网页(网站)连接远程数据库,请看下面的官网教程 OneinStack如何配置MySQL远程连接? 为了安全考虑,OneinStack仅 ...

  9. 2.3.2 EditText(输入框)详解

    本节引言: 上一节中我们学习了第一个 UI控件TextView(文本框),文中给出了很多实际开发中可能遇到的一些需求 的解决方法,应该会为你的开发带来便利,在本节中,我们来学习第二个很常用的控件Edi ...

  10. 常用lua代码块

    1.读取请求体中参数 local request_method = ngx.var.request_method local args --获取参数的值 if "GET" == r ...