当前位置:  ▪Android Touch事件分发过程详解 iis7站长之家
本页文章导读:
    ▪擒获来电事件        捕获来电事件 public class YourApplicationPhoneStateListener extends PhoneStateListener { @Override public void onCallStateChanged (int state, String incomingNumber) { /* state can be any of the following: Te.........
    ▪ linearlayout承袭扩展篇        linearlayout继承扩展篇 前面写了一个一个linearLayout,只不过那个只是继承了一个属性,在群聊的时候有人问 想在扩展的时候添加几个按钮,作为一个封装用,于是我就试了一下效果还不错:我.........
    ▪ 在sd卡顶用程序创建目录       在sd卡中用程序创建目录 如果要想在sd卡中的一个子目录下创造文件FileOutputStream fos = new FileOutputStream("/sdcard/Wallpaper/"+fileName); 这是错误的,需要 // create a File object for the parent directory File wallpa.........

[1]擒获来电事件
    来源: 互联网  发布时间: 2014-02-18
捕获来电事件
public class YourApplicationPhoneStateListener extends PhoneStateListener 
{ 
    @Override 
    public void onCallStateChanged (int state, String incomingNumber) 
    { 
        /* state can be any of the following: 
            TelephonyManager.CALL_STATE_IDLE 
            TelephonyManager.CALL_STATE_RINGING 
            TelephonyManager.CALL_STATE_OFFHOOK 
        */ 
 
    } 
} 
TelephonyManager.listen(new YourApplicationPhoneStateListener()); 

 

public class PhoneStateBroadcastReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
        Bundle bundle = intent.getExtras(); 
 
        int state = bundle.getInt(TelephonyManager.EXTRA_STATE); 
 
        if (state == TelephonyManager.CALL_STATE_RINGING) { 
            String phoneNumber =  
                bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER ); 
        } 
    } 
 
} 

 

<receiver android:name="package.to.PhoneStateBroadcastReceiver" android:enabled="true"> 
    <intent-filter> 
        <action android:name="android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED" /> 
    </intent-filter> 
</receiver>

  


    
[2] linearlayout承袭扩展篇
    来源: 互联网  发布时间: 2014-02-18
linearlayout继承扩展篇

前面写了一个一个linearLayout,只不过那个只是继承了一个属性,在群聊的时候有人问 想在扩展的时候添加几个按钮,作为一个封装用,于是我就试了一下效果还不错:我做了一个人工的进度条 可以加可以减

主函数很简单就一句话setContentView(R.layout.main);

相比大家都明白所有的东西 都在main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:app="http://schemas.android.com/apk/res/co.android.widget"
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:paddingTop="5px"
>
	<TextView	
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content" 
		android:text="Meter:"
	/>
	<com.commonsware.android.widget.Meter
		android:id="@+id/meter"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		app:max="100"
		app:incr="1"
		app:decr="5"
	/>																			
</LinearLayout>。红色部分是我自己加的属性啊 ,一定注意包名co.android.widget 

 

通过上面可以看到 没有prossbar,也没有加喝减的按钮啊,其实想想就知道了全在co.android.widget.Meter这里面。

那么就来看看Meter里面有啥:

public class Meter extends LinearLayout {
	private int max=100;
	private int incrAmount=1;
	private int decrAmount=-1;
	private ProgressBar bar=null;
	private View.OnClickListener onIncr=null;
	private View.OnClickListener onDecr=null;
	
	public Meter(final Context ctxt, AttributeSet attrs) {
		super(ctxt, attrs);
		
		this.setOrientation(HORIZONTAL);
		
		TypedArray a=ctxt.obtainStyledAttributes(attrs,R.styleable.Meter,0, 0);
		
		max=a.getInt(R.styleable.Meter_max, 100);
		incrAmount=a.getInt(R.styleable.Meter_incr, 1);
		decrAmount=-1*a.getInt(R.styleable.Meter_decr, 1);
		
		a.recycle();
	}
	/*
	public void setOnIncrListener(View.OnClickListener onIncr) {
		this.onIncr=onIncr;
	}
	
	public void setOnDecrListener(View.OnClickListener onDecr) {
		this.onDecr=onDecr;
	}
	
	public void setProgress(int progress) {
		bar.setProgress(progress);
	}
	
	public void setMax(int max) {
		this.max=max;
		bar.setMax(max);
	}
	*/
	@Override
	protected void onFinishInflate() {
		super.onFinishInflate();
		
		((Activity)getContext()).getLayoutInflater().inflate(R.layout.meter, this);
		
		bar=(ProgressBar)findViewById(R.id.bar);
		bar.setMax(max);
		
		ImageButton btn=(ImageButton)findViewById(R.id.incr);
		
		btn.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				bar.incrementProgressBy(incrAmount);
				
				if (onIncr!=null) {
					onIncr.onClick(Meter.this);
				}
			}
		});
		
		btn=(ImageButton)findViewById(R.id.decr);
		
		btn.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				bar.incrementProgressBy(decrAmount);
				
				if (onDecr!=null) {
					onDecr.onClick(Meter.this);
				}
			}
		});
	}
}

 我用不同颜色标注的部分 自己悟吧,就是怎么引用自定义属性。

你如果和上一篇比较就知道了 就多了一个onFinishInflate()   在这个方法中引用了另一个xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
>
	<ImageButton android:id="@+id/decr"
		android:layout_height="30px"
		android:layout_width="30px"
		android:src="/blog_article/@drawable/decr/index.html"
	/>
	<ProgressBar android:id="@+id/bar"
		
		android:layout_width="0px"
		android:layout_weight="1"
		android:layout_height="wrap_content"
	/>
	<ImageButton android:id="@+id/incr"
		android:layout_height="30px"
		android:layout_width="30px"
		android:src="/blog_article/@drawable/incr/index.html"
	/>
</LinearLayout>

 

attr就很简单了

<resources>
	<declare-styleable name="Meter">
		<attr name="max" format="integer" />
		<attr name="incr" format="integer" />
		<attr name="decr" format="integer" />
	</declare-styleable>
</resources>

 


    
[3] 在sd卡顶用程序创建目录
    来源: 互联网  发布时间: 2014-02-18
在sd卡中用程序创建目录

如果要想在sd卡中的一个子目录下创造文件FileOutputStream fos = new FileOutputStream("/sdcard/Wallpaper/"+fileName); 这是错误的,需要

// create a File object for the parent directory 
File wallpaperDirectory = new File("/sdcard/Wallpaper/"); 
// have the object build the directory structure, if needed. 
wallpaperDirectory.mkdirs(); 
// create a File object for the output file 
File outputFile = new File(wallpaperDirectory, filename); 
// now attach the OutputStream to the file object, instead of a String representation 
FileOutputStream fos = new FileOutputStream(outputFile); 

 

当然别忘了检查sd卡存在不Environment.getExternalStorageDirectory()


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