Android的Activity跳转和ProgressBar进度条

#### 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);

}

}

 

};

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KM-人工智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值