当前位置:  编程技术>移动开发
本页文章导读:
    ▪LayoutInflater 的应用        LayoutInflater 的使用 一般来讲,我们用LayoutInflater做一件事:inflate。inflate这个方法总共有四种形式,目的都是把xml表述的layout转化为View。This class is used to instantiate layout XML file into its correspondin.........
    ▪ ubuntu面板回复        ubuntu面板恢复 打开终端 ,终端窗口打开之后 ,输入下列命令:gconftool --recursive-unset /apps/panel接下来输入下列命令:rm -rf ~/.gconf/apps/panel最后还需要执行:pkill gnome-panelUbuntu 默认的上下两.........
    ▪ Android 腾挪开发TIPS小结4       Android 移动开发TIPS小结4 1 一个不错的handler例子   public static final int UPDATE_DATA = 0;//常量,代表更新数据 public static final int UPDATE_COMPLETED = 1;//常量,代表更新数据 TextView tv;//TextView对象的引.........

[1]LayoutInflater 的应用
    来源: 互联网  发布时间: 2014-02-18
LayoutInflater 的使用

一般来讲,我们用LayoutInflater做一件事:inflate。inflate这个方法总共有四种形式,目的都是把xml表述的layout转化为View。This class is used to instantiate layout XML file into its corresponding View objects . It is never be used directly -- use getLayoutInflater() or getSystemService(String)getLayoutInflater() or getSystemService(String) to retrieve a standard LayoutInflater instance that is already hooked up to the current context and correctly configured for the device you are running on

1. Context.public abstract Object getSystemService (String name) :Return the handle to a system-level service by name. The class of the returned object varies by the requested name. 具体参见文档。

2. 2种获得LayoutInflater的方法

(1)通过SystemService获得
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

(2)从给定的context中获取
LayoutInflater.from(context)

(3)二者区别:实质是一样的,请看源码
public static LayoutInflater from(Context context) {  
    LayoutInflater LayoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (LayoutInflater == null) {  
        throw new AssertionError("LayoutInflater not found.");  
    }  
    return LayoutInflater;  
}

3. LayoutInflater.inflate()

将Layout文件转换为View,顾名思义,专门供Layout使用的Inflater。虽然Layout也是View的子类,但在android中如果想将xml中的Layout转换为View放入.java代码中操作,只能通过Inflater,而不能通过findViewById(),这一段描述有误,看如下代码 。看下面文档写的已经很清楚。

Xml代码

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

<LinearLayout android:id="@+id/placeslist_linearlayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

</LinearLayout>
</ScrollView>
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.placeslist_linearlayout);

linearLayout.addView(place_type_text);

这是可运行的,这上面的xml中,LinearLayout不再是Layout的代表,而只是一个普通的View。

4. findViewById有2中形式

R.layout.xx 是引用res/layout/xx.xml的布局文件(inflate方法),R.id.xx是引用布局文件里面的组件,组件的id是xx...(findViewById方法)。看看R.java配置文件吧,R对文件分类管理,多写几个layout.xml后你会发现,所有的组件id都能用R.id.xx来查看,但是组件不在setContentView()里面的layout中就无法使用,Activity.findViewById()会出现空指针异常 。


    
[2] ubuntu面板回复
    来源: 互联网  发布时间: 2014-02-18
ubuntu面板恢复
打开终端 ,终端窗口打开之后 ,输入下列命令:

gconftool --recursive-unset /apps/panel

接下来输入下列命令:

rm -rf ~/.gconf/apps/panel

最后还需要执行:

pkill gnome-panel

Ubuntu 默认的上下两栏面板就会恢复默认值


应用程序菜单不管用
rm -rf .config/menus/

    
[3] Android 腾挪开发TIPS小结4
    来源: 互联网  发布时间: 2014-02-18
Android 移动开发TIPS小结4
1 一个不错的handler例子
   public static final int UPDATE_DATA = 0;//常量,代表更新数据
public static final int UPDATE_COMPLETED = 1;//常量,代表更新数据
TextView tv;//TextView对象的引用
Button btnStart;//Button对象的引用
//主线程的Handler对象
Handler myHandler = new Handler(){
@Override
public void handleMessage(Message msg) {//重写处理消息方法
switch(msg.what){//判断消息类别
case UPDATE_DATA://消息为更新的数据
tv.setText("正在更新来自线程的数据:"+msg.arg1+"%...");
break;
case UPDATE_COMPLETED://消息为更新完毕
tv.setText("已完成来自线程的更新数据!");
break;
}
}
};
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);//设置当前屏幕为R.layout.main布局文件
        tv = (TextView)findViewById(R.id.tv);//获得屏幕中TextView对象引用
        btnStart = (Button)findViewById(R.id.btnStart);//获得屏幕中Button对象引用
        btnStart.setOnClickListener(new View.OnClickListener() {//为Button添加点击事件监听器



public void onClick(View v) {
new Thread(){//启动一个新线程
public void run(){
for(int i=0;i<100;i++){
try{//睡眠一段时间
Thread.sleep(150);
}
catch(Exception e){
e.printStackTrace();
}
Message m = myHandler.obtainMessage();//创建

Message对象
m.what = UPDATE_DATA;//为what字段赋值
m.arg1=i+1;//为arg1字段赋值
myHandler.sendMessage(m);//发出Message对象
}
myHandler.sendEmptyMessage(UPDATE_COMPLETED);//发出更新

完毕消息
}
}.start();
}
});
    }

2 如果你对于Android的Thread+Handler方式感觉繁琐,不妨试试Activity提供的另外一种简单的方法runOnUiThread

,runOnUiThread可以帮助你在线程中执行UI更新操作,我们只需要在线程中写上类似
     android123.this. runOnUiThread(new Runnable() {
                    @Override
                        public void run() {
                           // refresh ui 的操作代码
                        }
                    }); 

这里需要注意的是runOnUiThread是Activity中的方法,在线程中我们需要告诉系统是哪个activity调用,所以前面

显示的指明了activity。

runOnUiThread() 方法 类似于JAVA ui的 保护线程


3 一种启动时显示启动首屏,然后过2秒跳转到其他intent的用法:
  new Handler().postDelayed(new Runnable(){

     
         public void run() {
             Intent mainIntent = new Intent(CoverActivity.this,PlayerActivity.class);
             CoverActivity.this.startActivity(mainIntent);
             CoverActivity.this.finish();
         }
          
        }, 2000);

4 多语言设置
  英文系  /res/drawable/icong.png
          /res/values/strings.xml
  日本语系
   /res/drawable-ja/icong.png
     /res/values-ja/strings.xml
  
繁体   zh-rTW:

5 在一个典型的应用中,比如修改用户名密码后,把修改的信息发送到服务端的SERVLET中,可以采用如下模式:
   StringBuilder requestString = new StringBuilder();
requestString.append("loginid=").append(userData[1])
.append("&oldpwd=").append(oldPassword.getText().toString

().trim())
.append("&newpwd=").append(newPassword.getText().toString

().trim());
final String url = OrderHttpUtil.BASE_URL +

OrderUrlUtil.MODIFY_PASSWORD_INFOR + requestString;
proDlg = OrderStringUtil.createProgressDialog(InforModifyActivity.this,
"提交请求", "正在提交请求数据,请稍后...",

false, true);
proDlg.show();
new Thread(){
@Override
public void run() {
/**
* res 结果判断
* -1 修改错误
* 0 修改成功
* 1 原密码错误
*/
String res = OrderHttpUtil.getHttpPostResultForUrl

(url);
Message m = new Message();
if("-1".equals(res))
m.what = OrderStringUtil.PASSWORD_ERROR;
else if("0".equals(res))
m.what = OrderStringUtil.PASSWORD_MODIFY_OK;
else
m.what = OrderStringUtil.PASSWORD_OLD_REEOR;
handler.sendMessage(m);

}
}.start();

handle处理:
   private Handler handler = new Handler(){
public void dispatchMessage(Message msg) {
AlertDialog.Builder builder = new AlertDialog.Builder

(InforModifyActivity.this);
proDlg.dismiss();
switch(msg.what){
case OrderStringUtil.BASE_MODIFY_OK
{
...............................
}

                 }



6 adb相关操作
   adb devices  列出状态
    adb get-state
    adb get-serialno  获得模拟器序号
安装apk
    adb -s emualator-5556 install  xxxx.apk
但注意,移除的时候要
   adb uninstall com.liao.xxxxx(移除的时候要输入包的名称)

7 adb测试压力测试
  adb -d shell monkey -p your.package.name -v 100
-p 表示指向的包名,-v 表示要测试的次数


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android获取当前已连接的wifi信号强度的方法 iis7站长之家
▪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