当前位置:  编程技术>移动开发
本页文章导读:
    ▪关于点击状态栏不回到顶部有关问题解决办法        关于点击状态栏不回到顶部问题解决方法 // When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its delegate.........
    ▪ 在多个Activity其间共享变量        在多个Activity之间共享变量       话说以前做的一个纯Java引擎准备移植到Android上面,前期已做过Demo,看起来一切都没有什么问题。不过,现在真正移植问题就来了。       第一个问题就.........
    ▪ 基于SD卡得资料选择器       基于SD卡得文件选择器 ◦public class ActivityFilePicker extends Activity { ◦ ◦ private ListView listViewFilePicker; ◦ private File mCurrentDirectory = new File(Environment.getExternalStorageDirectory().getAbsoluteP.........

[1]关于点击状态栏不回到顶部有关问题解决办法
    来源: 互联网  发布时间: 2014-02-18
关于点击状态栏不回到顶部问题解决方法
// When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its delegate does not return NO from `shouldScrollViewScrollToTop`, and it is not already at the top.
// On iPhone, we execute this gesture only if there's one on-screen scroll view with `scrollsToTop` == YES. If more than one is found, none will be scrolled.
@property(nonatomic) BOOL  scrollsToTop;          // default is YES.


设置这个属性,可以让点击状态栏不回到顶部,但是如果我们需要让他回到顶部,程序又不响应操作,解决方法

刚才上面的官方文档说了,只有当一个主控制器有一个scrollview 并把这个属性设置为yes,其他的scrollview.scrollsToTop = NO 这样才会响应这个事件,原理很简单,如果有2个scrollview,系统根本不知道你需要哪个滚动到最上面



    
[2] 在多个Activity其间共享变量
    来源: 互联网  发布时间: 2014-02-18
在多个Activity之间共享变量

      话说以前做的一个纯Java引擎准备移植到Android上面,前期已做过Demo,看起来一切都没有什么问题。不过,现在真正移植问题就来了。

      第一个问题就是,以前的Demo只是一个画面,引擎初期化是放在Activity的onCreate方法里面,这样做当然没有什么问题啦。现在画面增加到10来个,这个引擎如何为各个Activity公用成为了一个问题。

      对Android不熟悉,也只算是边学边做,所以有了下面的想法:

      1、用Service

      2、用Thread

      3、用Application

 

     现在用了第3种方法成功了。

    第1、2中方法我想本质上都是启动一个独立于Activity的线程,但是无法和Activity挂上关系。所以肯定是NullPointException啦。

 

    具体做法:

    很简单,引擎(或者某个普通的类)需要初始化,而且在应用程序不被销毁之前报保证被各个Activity可用。

    1、自定义一个类MyApplication来继承Application,在这个类中的onCreate方法里面初始化引擎。

    2、为了在各个Activity类中可以调用引擎,需要在1的自定义类中写一个getEngine的方法。

 

    class MyApplication extends Application {  
      
      private Engine engine;  
      
      public Engine getEngine(){  
        return engine;  
      }  
      public void onCreate(){
        engine = new Engine();
        engine.init();
     }
    }
 

    3、在Activity中通过获取引擎对象,并调用getEngine

MyApplication app = ((MyApplication)this.getApplicationContext());  
Engine engine = app.getEngine();  

    4、在AndroidMainfest.xml文件中将Application节点的Android:name改成我们自定义的类。

 

以上

 


    
[3] 基于SD卡得资料选择器
    来源: 互联网  发布时间: 2014-02-18
基于SD卡得文件选择器
◦public class ActivityFilePicker extends Activity {   
◦  
◦        private ListView listViewFilePicker;   
◦        private File mCurrentDirectory = new File(Environment.getExternalStorageDirectory().getAbsolutePath()); //根目录位置   
◦        AdapterFilePicker mFileAdapter; //ListView适配器   
◦        String fileEndings[] = { "mp3" };       //显示的文件类型   
◦  
◦        @Override  
◦        public void onCreate(Bundle savedInstanceState) {   
◦                super.onCreate(savedInstanceState);   
◦                setContentView(R.layout.layout_activityfilepicker);   
◦                listViewFilePicker = (ListView) findViewById(R.id.listview);   
◦                listViewFilePicker.setCacheColorHint(0x00000000);   
◦                mFileAdapter = new AdapterFilePicker(this);   
◦                listViewFilePicker.setAdapter(mFileAdapter);   
◦                //Item点击事件   
◦                ListView.OnItemClickListener lv2click = new ListView.OnItemClickListener() {   
◦                        public void onItemClick(AdapterView parent, View view,   
◦                                        int position, long id) {   
◦                                int fid = mFileAdapter.getItemType((int) id);   
◦                                String mPath = "";   
◦                                if (fid == 1) { //文件类型1为文件夹,点击进入该文件夹目录   
◦                                        String s1 = mFileAdapter.getItem((int) id).name;   
◦                                        if (s1.equals("..")) {   
◦                                                mPath = mCurrentDirectory.getParent();   
◦                                        } else {   
◦                                                mPath = mCurrentDirectory.getPath() + "/" + s1 + "/";   
◦                                        }   
◦                                        mCurrentDirectory = new File(mPath);   
◦                                        ListFile(mCurrentDirectory);   
◦                                } else { //返回选中的文件的Path   
◦                                        Bundle bundle = new Bundle();   
◦                                        bundle.putString("path", mCurrentDirectory.getPath()   
◦                                                        + "/" + mFileAdapter.getItem((int) id).name);   
◦                                        Intent mIntent = new Intent();   
◦                                        mIntent.putExtras(bundle);   
◦                                        setResult(RESULT_OK, mIntent);   
◦                                        ActivityFilePicker.this.finish();   
◦                                }   
◦                        }   
◦                };   
◦                ListFile(mCurrentDirectory);   
◦                listViewFilePicker.setOnItemClickListener(lv2click);   
◦        }   
◦  
◦        /**  
◦         * 列出该目录的文件  
◦         * @param aDirectory  
◦         */  
◦        private void ListFile(File aDirectory) {   
◦                mFileAdapter.clearItems();   
◦                mFileAdapter.notifyDataSetChanged();   
◦                listViewFilePicker.postInvalidate();   
◦                if (!aDirectory.getPath().equals("/sdcard")) {   
◦                        FileData fd = new FileData();   
◦                        fd.name = "..";   
◦                        fd.type = 1;   
◦                        mFileAdapter.addItem(fd);   
◦                }   
◦                for (File f : aDirectory.listFiles()) {   
◦                        if (f.isDirectory()) {   
◦                                FileData fd = new FileData();   
◦                                fd.name = f.getName();   
◦                                fd.type = 1;   
◦                                mFileAdapter.addItem(fd);   
◦                        } else {   
◦                                if (checkEnds(f.getName().toLowerCase())) {   
◦                                        FileData fd = new FileData();   
◦                                        fd.name = f.getName();   
◦                                        fd.type = 0;   
◦                                        mFileAdapter.addItem(fd);   
◦                                }   
◦                        }   
◦                }   
◦                mFileAdapter.notifyDataSetChanged();   
◦                listViewFilePicker.postInvalidate();   
◦        }   
◦  
◦        private boolean checkEnds(String checkItsEnd) {   
◦                for (String aEnd : fileEndings) {   
◦                        if (checkItsEnd.endsWith(aEnd))   
◦                                return true;   
◦                }   
◦                return false;   
◦        }   
◦}  


由于模块结构很简单,所以把遍历文件的方法放在Activity上了

◦public class AdapterFilePicker extends BaseAdapter {   
◦        private Context mContext;   
◦        private Vector mItems = new Vector();   
◦        private LinearLayout layout, layout_more;   
◦        private LayoutInflater inflate;   
◦        private TextView textViewItem;   
◦  
◦        public AdapterFilePicker(Context context) {   
◦                mContext = context;   
◦                inflate = (LayoutInflater) mContext   
◦                                .getSystemService(android.content.Context.LAYOUT_INFLATER_SERVICE);   
◦        }   
◦  
◦        public void addItem(FileData item) {   
◦                mItems.add(item);   
◦        }   
◦  
◦        public FileData getItem(int it) {   
◦                return (FileData) mItems.elementAt(it);   
◦        }   
◦  
◦        public int getCount() {   
◦                return mItems.size();   
◦        }   
◦  
◦        public long getItemId(int arg0) {   
◦                return arg0;   
◦        }   
◦  
◦        public int getItemType(int arg0) {   
◦                return getItem(arg0).type;   
◦        }   
◦  
◦        public void clearItems() {   
◦                mItems.clear();   
◦        }   
◦  
◦        public View getView(int position, View view, ViewGroup arg2) {   
◦                if(null == view){   
◦                        view = (LinearLayout) inflate.inflate(R.layout.item_filepicker_listview, null);   
◦                }   
◦                textViewItem = (TextView) view.findViewById(R.id.textViewFileName);   
◦                textViewItem.setText(getItem(position).name);   
◦                return view;   
◦        }   
◦  
◦}  


◦/** 
◦ * 文件结构 
◦ * @author Administrator 
◦ * 
◦ */ 
◦public class FileData {  
◦                public String name; //文件名  
◦                public int type; //文件类型  
◦} 

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