当前位置:  编程技术>移动开发
本页文章导读:
    ▪(Ubuntu)上设置环境变量的各种方法        (Ubuntu)下设置环境变量的各种方法 今天交叉编译环境变量的设置,出现了点小小的错误,使我的终端总提示PATH出错,让我感受比较深一些,首先把我从网上看到的和我知道的总结来给大家.........
    ▪ 设立屏幕亮度的悲剧        设置屏幕亮度的悲剧 WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes(); System.out.println(localLayoutParams.screenBrightness); localLayoutParams.screenBrightness = new Random(System.currentTimeMi.........
    ▪ 图片拖动跟缩放功能       图片拖动和缩放功能 在图片拖动的基础上增加 package com.xiawenquan; import android.app.Activity; import android.graphics.Matrix; import android.graphics.PointF; import android.os.Bundle; import android.util.FloatMath; import android.........

[1](Ubuntu)上设置环境变量的各种方法
    来源: 互联网  发布时间: 2014-02-18
(Ubuntu)下设置环境变量的各种方法
今天交叉编译环境变量的设置,出现了点小小的错误,使我的终端总提示PATH出错,让我感受比较深一些,首先把我从网上看到的和我知道的总结来给大家分享一下。

环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的 Shell。对于UNIX,可能是CShelll。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。下面通过几个实例来说明。

1)etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
注:在这里我们设定是为所有用户可使用的全局变量。

2)/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

3)~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
注:~在LINUX下面是代表HOME这个变量的。
另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是~/.bash_profile; ~/.bash_login或 ~/.profile其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如我用的是Ubuntu,我的用户文件夹下默认的就只有~/.profile文件。

4)~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.
(注:这个文件是 .开头的,所以在文件夹中被隐藏了)
那么我们如何添加自己定义的环境变量呢?
用记事本打开这个文件,然后在里面最后写上:
xiaokang=kangkang
然后保存,这样每次打开一个新的terminal的时候,我们这个变量就生效了。记住,如果你已经打开一个terminal,然后你修改了这个文件,那么在这个terminal下是不会生效的。一般情况用户最好在这里进行修改,但是有时候会覆盖父级的变量,比如PATH是ROOT设定的,但是如果你在这个文件里面写了PATH=xx,那么将来所有的PATH都成了xx了,所以我们应该在这个文件中写为: 
PATH=$PATH:xx
这样就把原来的和你自己的一起加上了。而且注意在LINUX系统下用:分割表示并列,而不是windo的;
3和4都是在用户目录下的,他们唯一的不同是: .bash_profile只能在登录的时候启动一次。在我的Ubuntu里面这个3文件似乎没有。

5)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是\"父子\"关系.

~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。

好的,总结一下他们的执行方式:
当你登录并且登录shell是bash时,bash首先执行/etc/profile文件中的命令(如果该文件存在),然后它顺序寻找~ /.bash_profile,~/.bash_login或~/.profile文件,并执行找到的第一个可读文件中的命令.当登录bash退出时,它 将执行~/.bash_logout文件中的命令.
当启动一个交互的bash时,它将执行~/.bashrc文件中的命令(如果该文件存在并且可读).当非交互地启动以运行一个shell脚本时,bash将查找bash_env环境变量,确定执行文件的名称.


第二篇资料
--------------------------------------------

在登录Linux时要执行文件的过程如下:
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的~/.bash_profile; ~/.bash_login或 ~/.profile文件中的其中一个(根据不同的linux操作系统的不同,命名不一样!!!!!!!!!!在我的Ubuntu里面只有~/.profile),

执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。
如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。

因为在 ~/.bash_profile文件中一般会有下面的代码:
if [ -f ~/.bashrc ] ; then
. ./bashrc
fi
~/.bashrc中,一般还会有以下代码:
if [ -f /etc/bashrc ] ; then
. /bashrc
fi
所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。
执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
关于各个文件的作用域,在网上找到了以下说明:
(1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
(2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
(3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
(4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
(5)
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承
/etc/profile中的变量,他们是"父子"关系。
(6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
/etc/profile和/etc/environment等各种环境变量设置文件的用处
先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文。
将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统重新登录,登录提示显示中文。
用户环境建立的过程中总是先执行/etc/profile然后在读取/etc/environment。为什么会有如上所叙的不同呢?
应该是先执行/etc/environment,后执行/etc/profile。
/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
系统应用程序的执行与用户环境可以是无关的,但与系统环境是相关的,所以当你登录时,你看到的提示信息,象日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如果系统环境LANG=zh_CN,则提示信息是中文的,否则是英文的。
对于用户的SHELL初始化而言是先执行/etc/profile,再读取文件/etc/environment.对整个系统而言是先执行/etc/environment。这样理解正确吗?
/etc/enviroment --> /etc/profile --> $HOME/.profile -->$HOME/.env (如果存在)
/etc/profile 是所有用户的环境变量
/etc/enviroment是系统的环境变量
登陆系统时shell读取的顺序应该是
/etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env
原因应该是jtw所说的用户环境和系统环境的区别了
如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了。

    
[2] 设立屏幕亮度的悲剧
    来源: 互联网  发布时间: 2014-02-18
设置屏幕亮度的悲剧
	      WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
	      System.out.println(localLayoutParams.screenBrightness);
	        localLayoutParams.screenBrightness = new Random(System.currentTimeMillis()).nextInt(10)*1F/10F;
	        getWindow().setAttributes(localLayoutParams);



说的都没错,但是如果嵌套在tabtab里卖弄的话,请getParent().......

    
[3] 图片拖动跟缩放功能
    来源: 互联网  发布时间: 2014-02-18
图片拖动和缩放功能

在图片拖动的基础上增加

package com.xiawenquan;

import android.app.Activity;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.os.Bundle;
import android.util.FloatMath;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
	private ImageView imageView;
	private PointF startPoint = null;
	private Matrix matrix = null;
	private Matrix currMatrix ;
	private int drug = 5;
	private int zoom = 10;
	private int type = 0;
	private float startDistance;
	private PointF midPointF;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        startPoint = new PointF();
        matrix = new Matrix(); // 用于拖拉变换
        currMatrix = new Matrix(); // 用于拖拉变换
        
        
        imageView = (ImageView) findViewById(R.id.imageView);
        imageView.setOnTouchListener(new View.OnTouchListener() {
			
			@Override
			public boolean onTouch(View view, MotionEvent event) {
				switch (event.getAction() & MotionEvent.ACTION_MASK) {
				case MotionEvent.ACTION_DOWN://只有一个手指按下屏幕时触发的事件
					currMatrix.set(matrix); // 保存上一次的移动点
					startPoint.set(event.getX(),event.getY());//移动前,手指按下的位置
					
					type = drug; // 只有一个手指按下屏幕时属于拖拉
					
					break;
				case MotionEvent.ACTION_MOVE://手指在屏幕移动时触发的事件,该事件在移动过程不断被触发
					if(type == drug){
						float mX = event.getX() - startPoint.x; // 移动点的X坐标
						float mY = event.getY() - startPoint.y;// 移动点的Y坐标
						matrix.set(currMatrix); // 保存当前变换的点
						matrix.postTranslate(mX, mY); // 移动到指定的点
					}else if(type == zoom){
						float distance = distance(event);
						if(distance > 5f){
							matrix.set(currMatrix); //在上次缩放结果的基本上进行缩放
							float cale =  distance / startDistance; // 获取距离的倍数
							matrix.preScale(cale, cale, midPointF.x, midPointF.y); // 前面2个参数是X,Y坐标缩放,后面的参考点的X,Y坐标
						}
						
					}
					
					break;
					
				case MotionEvent.ACTION_POINTER_DOWN://如果已经有一个手指按下屏幕,后续再有手指按下屏幕,就会触发这个事件
					startDistance = distance(event); // 保存2个手指的距离
					if(startDistance > 5f){ // 2个手指的最小距离是5个像素
						type = zoom;
						currMatrix.set(matrix); // 保存第一次缩放后的位置,用于2次以后的缩放(//保存当前的缩放结果)
						midPointF = getMidPoinF(event);
					}
					
					
					break;
					
				case MotionEvent.ACTION_UP://最后一个手指离开屏幕后触发的事件
					break;
				case MotionEvent.ACTION_POINTER_UP://有一个手指离开了屏幕,但还有手指在屏幕上,此时会触发该事件
					type = 0; // 当离开屏幕的时候还原。
					break;

				default:
					break;
				}
				
				imageView.setImageMatrix(matrix); // imageView在移动
				return true;
			}
		});
    }
    
    // 求两点的距离
    private float distance(MotionEvent event){
    	float eX = event.getX(1) - event.getX(0); // 后一个点减去前一个点
    	float eY = event.getY(1) - event.getY(0);
    	return  FloatMath.sqrt(eX * eX  + eY * eY);
    }
    
    // 求2点的中心点
    private PointF getMidPoinF(MotionEvent event){
    	float x = (event.getX(1) + event.getX(0)) / 2;
    	float y = (event.getY(1) + event.getY(0)) / 2;
    	return new PointF(x, y);
    }
}

 


    
最新技术文章:
▪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实现弹出键盘的方法
sqlserver iis7站长之家
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3