Activity跳转、子线程

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值