当前位置:  编程技术>移动开发
本页文章导读:
    ▪AudioManager黑名单复电自动静音        AudioManager黑名单来电自动静音 添加权限   <uses-permission android:name="android.permission.READ_PHONE_STATE" />       private TextView mTextView01; private TextView mTextView03; private EditText mEditText1; public void on.........
    ▪ 下拉刷新的兑现        下拉刷新的实现 首先,用到一个开源框架,可以去https://github.com/enormego/EGOTableViewPullRefresh下载。   然后,将里面的EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m拷到相应的项目里,在需要下拉.........
    ▪ gallary与listview矛盾       gallary与listview冲突 public boolean onTouchEvent(MotionEvent event) {  if(mAction == TOUCH_ACTION_MOVE){   return false;  }  boolean consumed = mGestureDetector.onTouchEvent(event);//  if (event.getAction() == MotionEvent.ACTION_UP) {//.........

[1]AudioManager黑名单复电自动静音
    来源: 互联网  发布时间: 2014-02-18
AudioManager黑名单来电自动静音

添加权限

 

<uses-permission
		android:name="android.permission.READ_PHONE_STATE" />
 

 

 

private TextView mTextView01;
	private TextView mTextView03;
	private EditText mEditText1;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.phone_silent);

		/* 设定PhoneCallListener */
		MyPhoneCallListener phoneListener = new MyPhoneCallListener();
		/* 设定TelephonyManager去抓取Telephony Severice */
		TelephonyManager telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
		/* 设定Listen Call */
		telMgr.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);

		/* 设定找寻TextView、EditText */
		mTextView01 = (TextView) findViewById(R.id.myTextView1);
		mTextView03 = (TextView) findViewById(R.id.myTextView3);
		mEditText1 = (EditText) findViewById(R.id.myEditText1);
		
		mEditText1.addTextChangedListener(new TextWatcher(){

			public void afterTextChanged(Editable s) {
				
			}

			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
				
			}

			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
				mTextView03.setText(mEditText1.getText());
			}
			
		});

	}

	/* 判断PhoneStateListener现在的状态 */
	public class MyPhoneCallListener extends PhoneStateListener {
		public void onCallStateChanged(int state, String incomingNumber) {
			switch (state) {
			/* 判断手机目前是待机状态 */
			case TelephonyManager.CALL_STATE_IDLE:
				mTextView01.setText("手机目前是待机状态");

				try {
					AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
					if (audioManager != null) {
						/* 设定手机为待机时,响铃模式为正常 */
						audioManager
								.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
						audioManager.getStreamVolume(AudioManager.STREAM_RING);
					}
				} catch (Exception e) {
					mTextView01.setText(e.toString());
					e.printStackTrace();
				}
				break;

			/* 判断状态为通话中 */
			case TelephonyManager.CALL_STATE_OFFHOOK:
				mTextView01.setText("通话中");
				break;

			/* 判断状态为来电 */
			case TelephonyManager.CALL_STATE_RINGING:
				/* 显示现在来电的讯息 */
				mTextView01.setText("来电:"
						+ incomingNumber);

				/* 判断与输入电话是否为一样,当一样时响铃模式转为静音 */
				if (incomingNumber.equals(mTextView03.getText().toString())) {
					try {
						AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
						if (audioManager != null) {
							/* 设定响铃模式为静音 */
							audioManager
									.setRingerMode(AudioManager.RINGER_MODE_SILENT);
							//audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);震动
							audioManager
									.getStreamVolume(AudioManager.STREAM_RING);
							Toast.makeText(PhoneSilent.this,
									"静音模式",
									Toast.LENGTH_SHORT).show();
						}
					} catch (Exception e) {
						mTextView01.setText(e.toString());
						e.printStackTrace();
						break;
					}
				}
			}

			super.onCallStateChanged(state, incomingNumber);
		}
	}
 



    
[2] 下拉刷新的兑现
    来源: 互联网  发布时间: 2014-02-18
下拉刷新的实现

首先,用到一个开源框架,可以去https://github.com/enormego/EGOTableViewPullRefresh下载。

 

然后,将里面的EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m拷到相应的项目里,在需要下拉刷新的页面对应的视图控制器中添加以下代码。

 

头文件:

 

#import "EGORefreshTableHeaderView.h"

@interface RootViewController : UITableViewController  <EGORefreshTableHeaderDelegate, UITableViewDelegate, UITableViewDataSource>{	
	EGORefreshTableHeaderView *_refreshHeaderView;
	BOOL _reloading;
}

- (void)reloadTableViewDataSource;
- (void)doneLoadingTableViewData;
@end

 

实现文件:

 

#import "RootViewController.h"

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
	
	if (_refreshHeaderView == nil) {		
		EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height)];
		view.delegate = self;
		[self.tableView addSubview:view];
		_refreshHeaderView = view;
		[view release];		
	}
	
	[_refreshHeaderView refreshLastUpdatedDate];	
}

#pragma mark -
#pragma mark UITableViewDataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 10;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 4;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
	
    return cell;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{	
	return [NSString stringWithFormat:@"Section %i", section];	
}

#pragma mark -
#pragma mark Data Source Loading / Reloading Methods

- (void)reloadTableViewDataSource{
	_reloading = YES;	
}

- (void)doneLoadingTableViewData{
	_reloading = NO;
	[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];	
}

#pragma mark -
#pragma mark UIScrollViewDelegate Methods

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{		
	[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];		
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{	
	[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];	
}

#pragma mark -
#pragma mark EGORefreshTableHeaderDelegate Methods

- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{	
	[self reloadTableViewDataSource];
	[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];	
}

- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{	
	return _reloading; 
}

- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{	
	return [NSDate date]; 	
}

#pragma mark -
#pragma mark Memory Management

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload {
	_refreshHeaderView=nil;
}

- (void)dealloc {	
	_refreshHeaderView = nil;
    [super dealloc];
}

@end

 

最后,一个很重要的步骤,别忘了加入QuartzCore.framework框架。


    
[3] gallary与listview矛盾
    来源: 互联网  发布时间: 2014-02-18
gallary与listview冲突

public boolean onTouchEvent(MotionEvent event) {
  if(mAction == TOUCH_ACTION_MOVE){
   return false;
  }
  boolean consumed = mGestureDetector.onTouchEvent(event);
//  if (event.getAction() == MotionEvent.ACTION_UP) {
//   if (mIsTouched || mIsDragging) {
//    processScrollSnap();
//    processGesture();
//   }
//  }
//  return super.onTouchEvent(event);
  return consumed;
 }
 
 public boolean dispatchTouchEvent(MotionEvent event) {
  boolean consumed = mGestureDetector.onTouchEvent(event);
  final int action = event.getAction();
  Log.d("eeeee", "dispatchTouchEvent action="/blog_article/action/index.html", mAction="+mAction);
  final float x = event.getX();   
        final float y = event.getY();
       
  switch(action){
  case MotionEvent.ACTION_DOWN:
   mAction = TOUCH_ACTION_NONE;
   mLastMotionX = x;
            mLastMotionY = y;
   break;
  case MotionEvent.ACTION_MOVE:
   int deltaX = (int) (mLastMotionX - x);
   int deltaY = (int) (mLastMotionY - y);
   if (mAction == TOUCH_ACTION_NONE) {
    if (Math.abs(deltaX) < 10 && Math.abs(deltaY) > 10) {
     mAction = TOUCH_ACTION_MOVE;
    } else if (Math.abs(deltaX) > 10 && Math.abs(deltaY) < 10) {
     mAction = TOUCH_ACTION_SNAP;
    }
    break;
   }
   if(mAction == TOUCH_ACTION_SNAP){
    return true;
   }else if(mAction == TOUCH_ACTION_MOVE){
    return super.dispatchTouchEvent(event);
   }
   break;
  case MotionEvent.ACTION_UP:
   if (mIsTouched || mIsDragging) {
    processScrollSnap();
    processGesture();
    return consumed;
   }
   mAction = TOUCH_ACTION_NONE;
  default:
   mAction = TOUCH_ACTION_NONE;
   break;
  }
//  return consumed;
  return super.dispatchTouchEvent(event);
  
 }
 


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