当前位置:  编程技术>移动开发
本页文章导读:
    ▪获得手机屏幕大小/style的应用技巧        取得手机屏幕大小/style的应用技巧这里介绍两个例子 1.取得手机屏幕分辨率的大小 这个程序非常简单,其中只需要一个关键的类--DisplayMetrics,这个类对象记录了一些常用的信息,包含了显示.........
    ▪ 不同Activity其间传递数据-Bundle对象和startActivityForResult方法的实现        不同Activity之间传递数据--Bundle对象和startActivityForResult方法的实现首先,由于Activity是Android四大组件之一,如果一个应用程序中包含不止一个Activity,则需要在AndroidManifest.xml文件中进行声明。.........
    ▪ GitHub的施用总结       GitHub的使用总结目前GitHub非常的火,无论是国内的还是国外的现在都在使用。抽空研究了一下这个东西的使用方法,并总结出来,虽然有一点晚,但是我觉得还是有需要了解和学习的地方。.........

[1]获得手机屏幕大小/style的应用技巧
    来源: 互联网  发布时间: 2014-02-18
取得手机屏幕大小/style的应用技巧

这里介绍两个例子

1.取得手机屏幕分辨率的大小

这个程序非常简单,其中只需要一个关键的类--DisplayMetrics,这个类对象记录了一些常用的信息,包含了显示信息,大小,维度,字体等

注意:取得的分辨率的宽和高都是整形

实例的代码如下:

public class EX03_05 extends Activity 
{
  private TextView mTextView01; 
  /** Called when the activity is first created. */ 
  @Override 
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);
    
    /* 必须引用 android.util.DisplayMetrics */
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    
    String strOpt = "手机屏幕分辨率为:" + dm.widthPixels + " × " + dm.heightPixels; 
    mTextView01 = (TextView) findViewById(R.id.myTextView01); 
    mTextView01.setText(strOpt);
    } 
  }

2.style的使用

通常,我们只需要在布局文件(xml)中定义text的颜色和大小,但是如果需要定义的同类对象太多,我们常常会使用style来做定义,这里需要我们事先把style.xml文件先定义在res/values/目录下,之后再做需要的填充

下面的这个实例用两个TextView来演示怎样引用style文件

2.1 style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="DavidStyleText1">
    <item name="android:textSize">18sp</item>
    <item name="android:textColor">#EC9237</item>
  </style>
  
  <style name="DavidStyleText2">
    <item name="android:textSize">14sp</item>
    <item name="android:textColor">#FF7F7C</item>
    <item name="android:fromAlpha">0.0</item>
    <item name="android:toAlpha">0.0</item>
  </style>
</resources>

2.2 layout布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="@drawable/white"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <!-- 套用樣式1的TextView -->
  <TextView
  
  
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content"
  android:gravity="center_vertical|center_horizontal" 
  android:text="@string/str_text_view1"
  />
  <!-- 套用樣式2的TextView -->
  <TextView
  
  
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content"
  android:gravity="center_vertical|center_horizontal" 
  android:text="@string/str_text_view2"
  />
</LinearLayout>



    
[2] 不同Activity其间传递数据-Bundle对象和startActivityForResult方法的实现
    来源: 互联网  发布时间: 2014-02-18
不同Activity之间传递数据--Bundle对象和startActivityForResult方法的实现

首先,由于Activity是Android四大组件之一,如果一个应用程序中包含不止一个Activity,则需要在AndroidManifest.xml文件中进行声明。

例如进行如下的声明(程序中包含两个Activity):

 <activity android:name=".EX03_10"
                android:label="@string/app_name">
        <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        
        <!-- 另一个Activity的声明 -->
      </activity>
      <activity android:name="EX03_10_1"></activity>

下面以两个例子说明不同的Activity之间传递数据的方法。

1.使用Bundle对象传递数据

传递数据使用的方法如下:

      /*new一个Intent对象,并指定class*/
        final Intent intent = new Intent(); 
        intent.setClass(EX03_10.this,EX03_10_1.class); 
        
        /*new一个Bundle对象,并将要传递的数据传入*/
        Bundle bundle = new Bundle();
        bundle.putDouble("height",height);
        bundle.putString("sex",sex); 
        /*将Bundle对象assign给Intent*/ 
        intent.putExtras(bundle); 
        /*调用Activity EX03_10_1*/
        
        startActivity(intent); 

接收数据使用的方法如下:

   /* 取得Intent中的Bundle对象 */
    Bundle bunde = this.getIntent().getExtras();
    
    /* 取得Bundle对象中的数据 */
    String sex = bunde.getString("sex");
    double height = bunde.getDouble("height");

下面给出具体的实现代码:

1.1  主程序代码(第一个Activity)

public class EX03_10 extends Activity 
{ 
  /** Called when the activity is first created. */ 
  @Override
  public void onCreate(Bundle savedInstanceState)
  { 
    super.onCreate(savedInstanceState); 
    /* 载入main.xml Layout */
    setContentView(R.layout.main); 
    /* 以findViewById()取得Button对象,并加入onClickListener */ 
    Button b1 = (Button) findViewById(R.id.button1);
    b1.setOnClickListener(new Button.OnClickListener() 
    {
      public void onClick(View v) 
      {
        /*取得输入的身高*/ 
        EditText et = (EditText) findViewById(R.id.height);
        double height=Double.parseDouble(et.getText().toString()); 
        /*取得选择的性别*/ String sex=""; 
        RadioButton rb1 = (RadioButton) findViewById(R.id.sex1);
        if(rb1.isChecked()) { 
          sex="M"; 
          }
        else{
          sex="F";
          } 
        /*new一个Intent对象,并指定class*/
        final Intent intent = new Intent(); 
        intent.setClass(EX03_10.this,EX03_10_1.class); 
        
        /*new一个Bundle对象,并将要传递的数据传入*/
        Bundle bundle = new Bundle();
        bundle.putDouble("height",height);
        bundle.putString("sex",sex); 
        /*将Bundle对象assign给Intent*/ 
        intent.putExtras(bundle); 
        /*调用Activity EX03_10_1*/
        
        startActivity(intent); 
        } 
      }); 
    }
  }

1.2 第二个Activity的实现代码:

public class EX03_10_1 extends Activity 
{
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    /* 加载main.xml Layout */
    setContentView(R.layout.myalyout);
    
    /* 取得Intent中的Bundle对象 */
    Bundle bunde = this.getIntent().getExtras();
    
    /* 取得Bundle对象中的数据 */
    String sex = bunde.getString("sex");
    double height = bunde.getDouble("height");
    
    /*判断性别 */
    String sexText="";
    if(sex.equals("M")){
      sexText="男性";
    }else{
      sexText="女性";
    }
    
    /* 取得标准体重 */
    String weight=this.getWeight(sex, height);
    
    /* 设定输出文字 */
    TextView tv1=(TextView) findViewById(R.id.text1);
    tv1.setText("你是一位"+sexText+"\n你的身高是"+height+
                "公分\n你的标准体重是"+weight+"公斤");
  }
  
  /* 四舍五入的method */
  private String format(double num)
  {
    NumberFormat formatter = new DecimalFormat("0.00");
  String s=formatter.format(num);
  return s;
  }

  /* 以findViewById()取得Button对象,onClickListener */  
  private String getWeight(String sex,double height)
  {
    String weight="";
  if(sex.equals("M"))
  {
    weight=format((height-80)*0.7);
    }else
  {
    weight=format((height-70)*0.6);
  } 
  return weight;
  }
}


2.返回数据到前一个Activity

这里需要使用startActivityForResult方法

传递数据的方法与上一个例子是类似的,实现的代码如下:

       /*new一个Intent对象,并指定class*/ 
        Intent intent = new Intent(); 
        intent.setClass(EX03_11.this,EX03_11_1.class);
        /*new一个Bundle对象,并将要传递的数据传入*/
        Bundle bundle = new Bundle(); 
        bundle.putDouble("height",height);
        bundle.putString("sex",sex); 
        /*将Bundle对象assign给Intent*/ 
        intent.putExtras(bundle); 
        /*调用Activity EX03_11_1*/ 
        startActivityForResult(intent,0); 

注意:这里需要实现一个重载的方法:

protected void onActivityResult (int requestCode, int resultCode, Intent data) 

在另一个Activity中获取数据的代码与上一个例子是相同的,实现如下:

/* 取得Intent中的Bundle对象 */ 
    intent=this.getIntent(); 
    bunde = intent.getExtras(); 
    /* 取得Bundle对象中的数据 */ 
    String sex = bunde.getString("sex");
    double height = bunde.getDouble("height"); 

下面给出这个例子的具体实现代码:

2.1  主程序的实现:

public class EX03_11 extends Activity {
  
  private EditText et; 
  private RadioButton rb1; 
  private RadioButton rb2; 
  /** Called when the activity is first created. */ 
  @Override
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    /* 加载main.xml Layout */ 
    setContentView(R.layout.main); 
    /* 以findViewById()取得Button对象,并加入onClickListener */
    Button b1 = (Button) findViewById(R.id.button1); 
    b1.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
        /*取得输入的身高*/ 
        et = (EditText) findViewById(R.id.height);
        double height=Double.parseDouble(et.getText().toString()); 
        /*取得选择的性别*/
        String sex="";
        rb1 = (RadioButton) findViewById(R.id.sex1); 
        rb2 = (RadioButton) findViewById(R.id.sex2); 
        if(rb1.isChecked()) { sex="M"; 
        }else{
          sex="F"; 
          } 
        /*new一个Intent对象,并指定class*/ 
        Intent intent = new Intent(); 
        intent.setClass(EX03_11.this,EX03_11_1.class);
        /*new一个Bundle对象,并将要传递的数据传入*/
        Bundle bundle = new Bundle(); 
        bundle.putDouble("height",height);
        bundle.putString("sex",sex); 
        /*将Bundle对象assign给Intent*/ 
        intent.putExtras(bundle); 
        /*调用Activity EX03_11_1*/ 
        startActivityForResult(intent,0); 
        } 
      }); 
    } 
  /* 重写 onActivityResult()*/
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (resultCode) { 
      case RESULT_OK: 
        /* 取得数据,并显示于画面上 */
        Bundle bunde = data.getExtras(); 
        String sex = bunde.getString("sex");
        double height = bunde.getDouble("height"); 
        et.setText(""+height);
        if(sex.equals("M")) {
          rb1.setChecked(true); 
          }
        else{
          rb2.setChecked(true); 
          } break;
          default: break;
          } 
    } 
  }

2.2 另一个Activity的实现:

public class EX03_11_1 extends Activity { 
  
  Bundle bunde; 
  Intent intent; 
  /** Called when the activity is first created. */
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    /* 载入mylayout.xml Layout */ 
    setContentView(R.layout.myalyout);
    
    /* 取得Intent中的Bundle对象 */ 
    intent=this.getIntent(); 
    bunde = intent.getExtras(); 
    /* 取得Bundle对象中的数据 */ 
    String sex = bunde.getString("sex");
    double height = bunde.getDouble("height"); 
    
    /* 判断性别 */
    String sexText="";
    if(sex.equals("M")) { 
      sexText="男性"; 
      } 
    else{ 
      sexText="女性"; 
      } 
    /* 取得标准体重 */
    String weight=this.getWeight(sex, height); 
    /* 设定输出文字 */ 
    TextView tv1=(TextView) findViewById(R.id.text1); 
    tv1.setText("你是一位"+sexText+"\n你的身高是"+height+ "公分\n你的标准体重是"+weight+"公斤"); 
    /* 以findViewById()取得Button对象,并加入onClickListener */ 
    Button b1 = (Button) findViewById(R.id.button1);
    b1.setOnClickListener(new Button.OnClickListener() {
      public void onClick(View v) { 
        /* 回传result回上一个activity */ 
        EX03_11_1.this.setResult(RESULT_OK, intent); 
        /* 关闭activity */ EX03_11_1.this.finish(); 
        } 
      });
    } 
  /* 四舍五入的method */ 
  private String format(double num) {
    NumberFormat formatter = new DecimalFormat("0.00");
    String s=formatter.format(num); 
    return s; 
    }
  /* 以findViewById()取得Button对象,并加入onClickListener */
  private String getWeight(String sex,double height) { 
    String weight=""; 
    if(sex.equals("M")) {
      weight=format((height-80)*0.7);
      } 
    else{
      weight=format((height-70)*0.6); 
      } 
    return weight; 
    } 
  }



    
[3] GitHub的施用总结
    来源: 互联网  发布时间: 2014-02-18
GitHub的使用总结

目前GitHub非常的火,无论是国内的还是国外的现在都在使用。抽空研究了一下这个东西的使用方法,并总结出来,虽然有一点晚,但是我觉得还是有需要了解和学习的地方。好了,进入主题,一步一步的去介绍,当然最容易的学习方法,当然是跟着github网站提供的步骤去学习。这里我也是针对这个内容来进行总结。


1、github的网址: https://github.com  

2、选择login,输入用户名,密码,登陆。登陆之后,就会进入到主页,这里包含了四个基本的应用:

  • Set Up Git
  •    Create A Repository
  • Fork a Repository
  • Be Social
3、Set Up a git (主要目的就是在本地系统上安装好git工具,因为github其实是服务于git的网站)

1、配置用户名和邮箱。 
git config --global user.name "Your Name Here"# Sets the default name for git to use when you commit
git config --global user.email "your_email@youremail.com"# Sets the default email for git to use when you commit
2、补充说明
  •          git的版本查询    git --version
  •  git的路径查询    which git
4、Create a Repository

  • 在网页中查收到 Create repository的网页绿色按钮后,输入必要的项目名称后,点击,即可完成创建repository的过程。需要记住的是项目名称为hello.git
  •          创建成功后,就涉及如何在本地创建一个客户端的库,以保证与服务断的同步。客户端的库的创建过程如下:
mkdir ~/Hello-World# Creates a directory for your project called "Hello-World" in your user directory

cd ~/Hello-World# Changes the current working directory to your newly created directory

git init# Sets up the necessary Git files
# Initialized empty Git repository in /Users/you/Hello-World/.git/

touch README# Creates a file called "README" in your Hello-World directory
git add README# Stages your README file, adding it to the list of files to be committed

git commit -m 'first commit'# Commits your files, adding the message "first commit"
git remote add origin https://github.com/username/Hello-World.git# Creates a remote named "origin" pointing at your GitHub repo

git push origin master# Sends your commits in the "master" branch to GitHub

  • 上述过程当中,涉及到几个比较关键的点,也是我在研究的过程中花了一些时间才弄清楚的地方。下面一一讲解
  •   git init                                     实际上是在一个空目录,或者空项目中,建立一个初步的git扩展。
  •   git add README                 这个意思,是上传README一个文件,当文件比较多的情况下,需要上传目录当中的所有文件,此时应该的写法为 git ad . 记住要有个点。
  •   git commit -m '注释说明‘     这个其实就是提交到本地库当中。
  •   git remote add origin https://github.com/username/Hello-world.git       他的含义其实是将本地的库 origin,上传到服务器的Hello-world.git当中。
  •   git push -u origin master    意思就是上传,这个地方才是真正的上传

5、Fork a Repo 

  • fork的理解,其实fork的含义是通知一个git项目的主人,我要将你的代码fork到我的空间去,然后我就可以进行修改了,这样有利于其他未授权的人对代码进行贡献。还有,fork之后,就使用  git clone https://github.com/username/Hello-world.git
  •         修改之后,需要提交到github上,此时使用的方法位:git remote add upstream https://github.com/octocat/hello-world.git
  •          git fetch ustream  获取未改变的内容。 
  •          
  • 这里有一个概念,就是 git fetch,和git pull,其实都是从服务器获取代码,相当于update,但是fetch是不自动覆盖,而pull就会自动覆盖掉。
  • 此外,还有一个概念,就是当clone之后,origin指向的其实是你自己的repo,而主人的变更是需要通过如下,获得具体的配置跟踪。
cd Spoon-Knife# Changes the active directory in the prompt to the newly cloned "Spoon-Knife" directory
git remote add upstream https://github.com/octocat/Spoon-Knife.git# Assigns the original repo to a remote called "upstream"
git fetch upstream# Pulls in changes not present in your local repository, without modifying your files
      我的理解,其实就是分支的问题。所谓分支,其实目的是当你需要同时解决两个问题的时候,而这两个问题为了便于后续在合并,因此会创建一个分支,然后在做meiger,将分支合并,从而解决这样的同时存在的问题。

      因此,当你只提交自己的改变给自己的时候,可以如下:
git push origin master# Pushes commits to your remote repo stored on GitHub

   而当你需要与主人的分支进行合并的时候,需要如下做法:
git fetch upstream# Fetches any new changes from the original repo
git merge upstream/master# Merges any changes fetched into your working files
 
创建分支的方法:

git branch mybranch# Creates a new branch called "mybranch"
git checkout mybranch# Makes "mybranch" the active branch
      其实是实现一个branch,然后将这个branch作为当前获得的branch,进行修改。改变当前branch的方法如下:
git checkout master# Makes "master" the active branch
git checkout mybranch# Makes "mybranch" the active branch
两个branch做最后的合并
git checkout master# Makes "master" the active branch
git merge mybranch# Merges the commits from "mybranch" into "master"
git branch -d mybranch# Deletes the "mybranch" branch

Pull request 基本含义是,向主人发送请求,通知他,我做了改变,你可以看看。

Unwatch the main repo 的基本含义,是说,对于很多人都进行更新的项目,我做一些选择,放弃一些更新的跟踪。

最后,还想介绍一下删除一个项目的方法,这个方法在github上其实有时候是很难找到的,具体的方法为:

首先,选择项目 -- 然后选择Setting -- Delete this repository



补充一个关于git的ssh远程访问的配置方法:


首先在本地创建ssh key;

$ ssh-keygen -t rsa -C "your_email@youremail.com"
后面的[email]your_email@youremail.com[/email]改为你的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。

回到github,进入Account Settings,左边选择SSH Keys,Add SSH Key,title随便填,粘贴key。为了验证是否成功,在git bash下输入:

$ ssh -T [email]git@github.com[/email]
如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。

接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。


$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"
进入要上传的仓库,右键git bash,添加远程地址:



    
最新技术文章:
▪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