当前位置:  编程技术>移动开发
本页文章导读:
    ▪创设ListView的基本步骤        创建ListView的基本步骤参考《疯狂android讲义》第2.5节P94 1、创建一个或者多个ListView <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android.........
    ▪ Printk与sched_clock_init的1点分析        Printk与sched_clock_init的一点分析 作者:Younger Liu, 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。   在分析Linu内核启动的过程中,发现一段“.........
    ▪ 接续点击返回键,退出应用程序       连续点击返回键,退出应用程序今天试了一下,比较常用的退出app方式,快速连击返回键,退出应用程序,不多说,上代码:   // 退出时间 private long currentBackPressedTime = 0; // 退出间隔 priva.........

[1]创设ListView的基本步骤
    来源: 互联网  发布时间: 2014-02-18
创建ListView的基本步骤

参考《疯狂android讲义》第2.5节P94


1、创建一个或者多个ListView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    
    <ListView 
        android:id="@+id/list1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:divider="#f00"
        android:dividerHeight="2dp"
        android:headerDividersEnabled="false" />
    
        <ListView 
        android:id="@+id/list2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:divider="#0f0"
        android:dividerHeight="2dp"
        android:headerDividersEnabled="true" />
</LinearLayout>

2、创建TextViewResource,为每个元素定义其显示属性

array_item1.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv_item1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textSize="20sp"
    android:padding="10dp"
    android:shadowColor="#0f0"
    android:shadowDx="4"
    android:shadowDy="4"
    android:shadowRadius="2">
</TextView>
array_item2.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv_item2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textSize="20sp"
    android:padding="10dp"
    android:shadowColor="#ff0"
    android:shadowDx="4"
    android:shadowDy="4"
    android:shadowRadius="2">
</TextView>

3、创建Activity,并完成以下三个步骤

package com.ljh.listviewdemo;

import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//3、定义每个元素的内容
		String[] arr1 = new String[]{"孙悟空","猪八戒","沙僧","唐僧"};
		
		//4、将元素属性及元素内容包装为ArrayAdapter
		ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, R.layout.array_item1, arr1);
		
		//5、为ListView设置Adapter
		ListView list1 = (ListView) findViewById(R.id.list1);
		list1.setAdapter(adapter1);
		
		//3、定义每个元素的内容
		String[] arr2 = new String[]{"Java","C++","Python","PHP"};
		
		//4、将元素属性及元素内容包装为ArrayAdapter
		ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, R.layout.array_item2, arr2);
		
		//5、为ListView设置Adapter
		ListView list2= (ListView) findViewById(R.id.list2);
		list2.setAdapter(adapter2);
	}
	
}






    
[2] Printk与sched_clock_init的1点分析
    来源: 互联网  发布时间: 2014-02-18
Printk与sched_clock_init的一点分析


作者:Younger Liu,

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。

 

在分析Linu内核启动的过程中,发现一段“不平常”的日志,感觉产生这段日志的代码肯定是“不可思议”的。因此就大致分析了一下:

日志如下:

[ 0.000000] console [ttyMT0] enabled

[ 2.157770] Calibrating delay loop... 1694.10 BogoMIPS (lpj=4235264)

更精细的日志如下:

        [    0.000000] start:sched_clock_init.

        [    2.100505] end  :sched_clock_init.

与这段日志有关的代码是:

void sched_clock_init(void)

{

    /*printk(KERN_CRIT “start:sched_clock_init.\n”)*/

    sched_clock_running = 1;

    /*printk(KERN_CRIT “end  :sched_clock_init.\n”)*/

}

难道这一句简简单单的赋值就会花费两秒是的时间??那么就分析一下相关的代码:sched_clock_running作用和printk的实现。

 

1.      sched_clock_running的作用

分析发现,调用sched_clock_running的地方仅仅有函数sched_clock_cpu():

u64 sched_clock_cpu(int cpu)

{

    if (unlikely(!sched_clock_running))

       return 0;

 

    return sched_clock();

}

很明显,如果sched_clock_running为0(unlikely已经说明sched_clock_running很少为0),则返回0;如果不为0,调用sched_clock返回当前的调度时钟时间(相对系统起始的时间,单位为纳秒)。

函数sched_clock_cpu()被大约四个函数调用cpu_clock() / local_clock / update_rq_clock() / ttwu_queue()。

 

综上可知,执行sched_clock_init之前,获取的调度时钟时间都是0,执行sched_clock_init之后,取得的调度时钟时间都是有非零值的。

 

2.      Printk()的实现

Printk的实现都在文件./kernel/printk.c中。Printk() ->  vprintk(),而在vprintk()会通过cpu_clock()获取时间。而有上可知,能否打印时间是和sched_clock_init有没有被执行是有直接关系的。

 

3.      结论

通过分析,可以知道,日志中显示的两秒的差距不是因为执行语句花费了两秒,而是因为在该语句之前,没有获取到有效的调度时钟时间。

 

作者:Younger Liu,

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。


    
[3] 接续点击返回键,退出应用程序
    来源: 互联网  发布时间: 2014-02-18
连续点击返回键,退出应用程序

今天试了一下,比较常用的退出app方式,快速连击返回键,退出应用程序,不多说,上代码:

 

	// 退出时间
	private long currentBackPressedTime = 0;
	// 退出间隔
	private static final int BACK_PRESSED_INTERVAL = 2000;

	//在activity中重写onBackPressed方法
	@Override
	public void onBackPressed() {
		// 判断时间间隔
		if (System.currentTimeMillis() - currentBackPressedTime > BACK_PRESSED_INTERVAL) {
			currentBackPressedTime = System.currentTimeMillis();
			Toast.makeText(this, "再按一次返回键退出程序", Toast.LENGTH_SHORT).show();
		} else {
			// 退出
			SysApplication.Quit(this);
		}
	}


 另一种方法是:重写onKeyDown方法,里面写一个popupwindow展示

	@Override
	public boolean onKeyDown(int paramInt, KeyEvent paramKeyEvent) {
		switch (paramInt) {
		case 4:
			PopupUtil.showOutPop(this, this.homePageMainLayout);
		default:
			return false;
		}

	}


 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3