Android的Activity跳转和ProgressBar进度条

来源:互联网 发布:临床医学数据库 编辑:程序博客网 时间:2024/05/22 00:19

#### Android四大组件:

 

Activity 交互:前台美女

Service 服务:苦逼程序员

ConrtentProvider 存储:财务 仓管

Brocast Intent Receiver 广播:跑腿的  小秘书 负责通讯

#### Activity跳转

1、需要定义目标界面

 

public class LoginActivity extends Activity {

 

// 窗口创建时触发

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 设置布局

setContentView(R.layout.login_layout);

}

 

}

2、目标界面要添加到manifest.xml中

<!-- 注册Activity -->

    <activity android:name="com.xykj.android20170421.LoginActivity" >

     </activity>

 

3、使用Intent跳转

 

//跳转到登录界面 Context

Intent it = new Intent(MainActivity.this,LoginActivity.class);

//启动跳转

startActivity(it);

#### 监听返回键

可以重写Activity中的onKeyUp方法(也可以用onKeyDown)

 

/**

 * 监听键盘按键弹起

 * keyCode表示按键值

 * event表示键盘的事件对象

 *

 */

@Override

public boolean onKeyUp(int keyCode, KeyEvent event) {

//监听返回键

if(keyCode == KeyEvent.KEYCODE_BACK){

finish();  //结束Activity的方法

return true;

}

return super.onKeyUp(keyCode, event);

}

#### 滚动视图

垂直方向的:ScrollView;水平方向:HorizontalScrollView,滚动视图只允许至多有一个孩子

 

mScrollView.scrollTo(x, y); 表示滚动到一个绝对位置

mScrollView.scrollBy(x, y); 滚动到一个相对位置

x从左到右为正,y从上到下为正

文本框添加滚动

 

tv.setMovementMethod(ScrollingMovementMethod.getInstance());

#### ProgressBar

进度条,默认效果是圆圈动画,一直转,如果要换成水平的,需要加水平样式

 

style="@android:style/Widget.ProgressBar.Horizontal"

水平进度条的属性

 

android:max="100" 最大进度,默认100

    android:progress="30" 第一进度(实进度)

    android:secondaryProgress="50" 第二进度(虚进度)

java中:

int current = mProgressBar.getProgress();获取当前进度

mProgressBar.getMax()  获取总进度

mProgressBar.setProgress(current); 设置进度

mProgressBar.setSecondaryProgress(second); 设置第二进度

#### 子线程

Android子线程不允许直接操作UI,如果需要改变UI则需要将信息发送给主线程,让主线程去更新UI,所以子线程一般结合Handler一起使用

 

1、定义子线程,并处理内容,处理完毕时需要更新则发消息给主线程

 

new Thread() {

public void run() {

while (mProgressBar.getProgress() < mProgressBar.getMax()) {

int current = mProgressBar.getProgress();

current += 5;

// 更新显示效果,发消息给主线程

Message msg = new Message();

msg.what = 100;  //号码

msg.obj = current; //内容

mHandler.sendMessage(msg);

try {

Thread.sleep(500);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}.start();

2、需要在主线程中定义接收消息的Handler

 

private Handler mHandler = new Handler() {

 

// 接收到消息的方法

@Override

public void handleMessage(Message msg) {

if(msg.what == 100){

int progress = (Integer) msg.obj;

//更新UI

mProgressBar.setProgress(progress);

}

}

 

};