最近总结的android疑惑(二)
来源:互联网 发布:淘宝云建站不能用了吗 编辑:程序博客网 时间:2024/05/29 07:56
解决popupwindow中弹出输入法被遮挡问题,在Popupwindow中有EditText,当点选EditText后输入法在popupwindow后面显示了,其实在popupwindow中有个输入法配置选项。最关键就是设置输入模式 就是这里
nava_home_popupWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
这样就可以让popupWindow显示在最前面而不受软键盘的影响。
获取联系人头像:
ContentResolver cr = view.getContext().getContentResolver();
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,
Long.parseLong(contact.contact_id));
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
Bitmap photo = BitmapFactory.decodeStream(input);
当我们点击了某个控件,首先会去调用该控件所在布局的dispatchTouchEvent方法,然后在布局的dispatchTouchEvent方法中找到被点击的相应控件,再去调用该控件的dispatchTouchEvent方法。如果我们点击了MyLayout中的按钮,会先去调用MyLayout的dispatchTouchEvent方法,可是你会发现MyLayout中并没有这个方法。那就再到它的父类LinearLayout中找一找,发现也没有这个方法。那只好继续再找LinearLayout的父类ViewGroup,你终于在ViewGroup中看到了这个方法,按钮的dispatchTouchEvent方法就是在这里调用的。
自定义类加载器:
public class ClassLoaderTest { public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException { //新建一个类加载器 MyClassLoader cl = new MyClassLoader("myClassLoader"); //加载类,得到Class对象 Class<?> clazz = cl.loadClass("classloader.Animal"); //得到类的实例 Animal animal=(Animal) clazz.newInstance(); animal.say(); } }
class Animal{ public void say(){ System.out.println("hello!"); } }
class MyClassLoader extends ClassLoader { //类加载器的名称 private String name; //类存放的路径 private String path = "E:\\testclassloader\\src"; MyClassLoader(String name) { this.name = name; } MyClassLoader(ClassLoader parent, String name) { super(parent); this.name = name; } /** * 重写findClass方法 */ @Override public Class<?> findClass(String name) { byte[] data = loadClassData(name); return this.defineClass(name, data, 0, data.length); } public byte[] loadClassData(String name) { try { name = name.replace(".", "//"); FileInputStream is = new FileInputStream(new File(path + name + ".class")); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int b = 0; while ((b = is.read()) != -1) { baos.write(b); } return baos.toByteArray(); } catch (Exception e) { e.printStackTrace(); } return null; } }
linearLayout来控制类似于相对布局的xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="#ff0000" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#00ff00" android:gravity="bottom" > <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="sdfsdfal" /> </LinearLayout></LinearLayout>
//首先为监听器赋初始值private TelephonyManager mTelephonyManager; PhoneStateListener pListener = new PhoneStateListener(){ @Override public void onCallStateChanged(int state, String number) { // TODO Auto-generated method stub switch (state) { case TelephonyManager.CALL_STATE_IDLE://无任何状态 break; case TelephonyManager.CALL_STATE_OFFHOOK://接听来电 writeFile(state,number); break; case TelephonyManager.CALL_STATE_RINGING://来电 incomingNumber=number; writeFile(state,number); break; default: break; } super.onCallStateChanged(state, incomingNumber); } }; //注意需要在oncreate()中这样写:mTelephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
关于android中音频焦点的获取:
private OnAudioFocusChangeListener mFocusChangeListener = null;private boolean mGetFocus = false;mFocusChangeListener = new OnAudioFocusChangeListener() {@Overridepublic void onAudioFocusChange(int focusChange) {if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { //获得音频焦点时mGetFocus = true;} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS|| focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) { //失去音频焦点时mGetFocus = false;}}}; //获取音频焦点private boolean requestAudioFocus() { if (!mGetFocus) { int result = audioManager.requestAudioFocus(mFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { mGetFocus = false; } else { mGetFocus = true; } } return mGetFocus; }//失去音频焦点private void abandonAudioFocus() { if (mGetFocus && (null != audioManager) && (null != mFocusChangeListener)) { if (AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioManager .abandonAudioFocus(mFocusChangeListener)) { mGetFocus = false; } else { mGetFocus = true; } } }
- 最近总结的android疑惑(二)
- 最近总结的android疑惑
- 最近总结的android疑惑(三)
- 最近疑惑的问题
- 最近Android的学习总结
- 最近笔试总结二
- 总结一些常见的疑惑
- 最近的android项目开发问题总结
- 最近开发Android的一些总结
- 最近的android项目开发问题总结
- 关于android 学习的最近总结-1
- 关于android学习的最近总结-2
- 最近总结的Android笔记(三)
- 关于Android的api疑惑
- 最近一年做Android项目过程中,对其的一些注意事项(优化)以及问题总结(二)
- 读<<effective C++>>的疑惑总结
- 最近的总结
- 最近的总结
- hdu 5185
- 23种设计模式(20):责任链模式
- liunx常用命令
- 03-06-2015
- hdu2604---Queuing(AC自动机+矩阵)
- 最近总结的android疑惑(二)
- LeetCode:Sum Root to Leaf Numbers
- POJ 2965-The Pilots Brothers' refrigerator
- 安装WebLogic的详细步骤
- 手把手教你:win7下的python+django项目移植到虚拟机的Ubuntu下网页无法显示的解决方法
- android launchmode(四种启动模式)应用场景及实例
- 设计包含min或max功能的栈
- NEUQ 1256: 核电站问题
- 黑马程序员----集合类