Tag: android

绘制path和硬件加速

在我看来,我正在绘制一条相当大的路,而且我遇到了一些性能问题。 目前的path是32000点,但我的应用程序应该扩展到至less128000点。 对于path的大小,我无法做任何事情,因为数据集非常大,我需要能够一次显示整个path并允许放大。 我使用的是运行Android 4.2的Nexus 10,默认情况下硬件加速function是针对未明确禁用的应用程序启用的。 path是用下面的代码创build的(我省略了一些设置和其他不相关的部分): dataPath.moveTo(0, offset – (float) data[leftLimit]/ scalingFactor); for (int i = leftLimit; i < rightLimit; ++i) { x = (i – leftLimit) * dx; y = offset – (float) data[i]/ scalingFactor; dataPath.lineTo(x, y); } 然后在onDraw()方法中绘制: canvas.drawColor(Color.WHITE); canvas.drawPath(dataPath, linePaint); 我测量了使用adb shell dumpsys gfxinfo来绘制我的视图所花费的时间,而且没有硬件加速,我惊讶地发现硬件加速比较慢: 随着硬件加速: 没有硬件加速: 硬件加速版本每帧需要大约200-300毫秒,大部分花费在处理阶段。 非加速版本大约需要50 ms,Draw阶段为2/3,处理阶段为1/3。 显然,即使我没有硬件加速的更快的版本仍然太慢,达不到60fps,或者当我移动到更大的数据集时甚至几乎无法使用。 将path渲染为位图,然后仅将该位图转换为适合屏幕的想法在我的情况下也是有问题的。 […]

android.content.Context.getPackageName()'的空对象引用

嗨,我正在与实现接口的碎片工作。 public class SigninFragment extends Fragment implements SigninInterface 片段类中接口的方法实现如下。 @Override public void afterSubmitClicked(String userId, Bundle bundle) { Log.d(TAG,"Calling time afterSubmitClicked called"+bundle); if(!userId.equals("-1")){ //Logged in successfully //Move to MusicHome Intent mIntent = new Intent(getActivity(),MusicHome.class); mIntent.putExtra("SigninFragment.user_details", bundle); startActivity(mIntent); }else{ //Logging in failed //show error dialog } } 这个方法在执行一个AsynchronousTask(它扩展了AsyncTask)类之后被调用。 但是我正在崩溃。 并显示错误消息 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String […]

带有FrameLayout容器的AppBarLayout作为滚动内容不起作用

我试图使用最新的devise库,使我的工具栏隐藏/滚动显示。 我的问题是滚动的内容,我在片段,我只是注入到FrameLayout容器,它不起作用。 这是我的活动: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.CoordinatorLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <include layout="@layout/layout_toolbar" /> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> <FrameLayout android:id="@+id/navigation_drawer_container" android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" tools:layout="@layout/fragment_nav_drawer_anon" /> 和我的片段: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/pull_to_refresh" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.v4.widget.SwipeRefreshLayout> <TextView android:id="@android:id/empty" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="18sp" […]

在ImageView中获取drawable的ID

我有一个ImageView并设置一个可绘制的。 现在我需要dynamic获取ImageView点击事件的drawable ID。 我怎么才能得到它? imgtopcolor = (ImageView) findViewById(R.id.topcolor); imgtopcolor.setImageResource(R.drawable.dr); // How do I get this back? 现在触摸imgtopcolor事件我想要drawable id,因为我设置不同的drawable每次都想要比较drawable与其他

showAsAction =“ifRoom”即使有足够的空间也不显示该项目

我试图让ActionBar在我的应用程序上正常工作(并且我使用ActionBarSherlock来获得Android 2.x和4.x之间统一的UI)。 我觉得像android:showAsAction="ifRoom"只是一个大,胖的谎言。 每当我给ifRoom设置一个动作,它总是出现在溢出菜单,即使有空间的PLENTY。 这是来自同一个模拟器的两个屏幕截图。 第一个显示ActionBar的所有选项设置为always ,第二个显示ActionBar,最后两个选项设置为ifRoom 。 正如你所看到的,当他们全部显示在屏幕截图中时,有足够的空间,那为什么他们不在第二个显示,因为他们有空间? 这是我的menu.xml: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/add" android:icon="@drawable/ic_menu_btn_add" android:showAsAction="always" android:title="Add"/> <item android:id="@+id/calculateNPV" android:icon="@drawable/menu_icon_npv" android:showAsAction="always" android:title="NPV"/> <item android:id="@+id/calculateIRR" android:icon="@drawable/menu_icon_irr" android:showAsAction="always" android:title="IRR/YR"/> <item android:id="@+id/send" android:icon="@android:drawable/ic_menu_share" android:showAsAction="always" android:title="@string/share_pdf"/> <item android:id="@+id/graph" android:icon="@drawable/ic_menu_gallery" android:showAsAction="ifRoom" android:title="@string/view_cashflow_diagram"/> <item android:id="@+id/deleteReorder" android:icon="@drawable/ic_menu_clear_playlist" android:showAsAction="ifRoom" android:title="@string/delete_reorder_cashflows"/> </menu>

ContentProvider insert()总是在UI线程上运行?

我有一个应用程序需要从服务器提取数据,并将其插入SQLite数据库以响应用户input。 我认为这将是非常简单的 – 从服务器获取数据的代码是AsyncTask的一个相当简单的子类,它的工作原理与我预期的一样,不需要挂接UI线程。 我用一个简单的接口为它实现了callback函数,并将其封装在一个静态类中,所以我的代码如下所示: MyServerCaller.getFolderContents(folderId, new OnFolderContentsResponseListener() { @Override public void onFolderContentsResponse(final List<FilesystemEntry> contents) { // do something with contents } } 一切还好。 即使服务器需要一个小时来检索数据,但UI仍然运行平稳,因为getFolderContents中的代码正在AsyncTask的doInBackground方法中运行(与UI分离)。 在getFolderContents方法的最后,调用onFolderContentsResponse并传递从服务器接收到的FilesystemEntry列表。 我只是说这一切,所以希望清楚,我的问题不在getFolderContents方法或任何我的networking代码,因为它不会发生在那里。 当我尝试通过onFolderContentsResponse方法内的ContentProvider的子类插入到数据库时出现问题; 用户界面总是挂起,而代码执行,导致我相信,尽pipe从AsyncTask的doInBackground方法调用,插入仍然在UI线程上运行。 以下是有问题的代码: MyServerCaller.getFolderContents(folderId, new OnFolderContentsResponseListener() { @Override public void onFolderContentsResponse(final List<FilesystemEntry> contents) { insertContentsIntoDB(contents); } } 和insertContentsIntoDB方法: void insertContentsIntoDB(final List<FilesystemEntry> contents) { for (FilesystemEntry entry : contents) […]

Android的Treeview

我知道有ExpandableListView但它只支持2级。 我需要一个真正的treeview垂直列表,至less达到5级(更多更好)。 有什么build议么? 编辑: 我看到有关使用自定义适配器并根据项目级别设置填充的说明。 我有一个未分类的具有ID和父ID的对象的ArrayList,我也dynamic地添加项目到这个数组。 任何人都可以给我一些如何去做这个事情的例子吗?

我应该添加到SVN的文件在使用Android Studio的项目中忽略

在eclipse中,我有添加bin和gen目录svn忽略的习惯。 但是现在,使用Android Studio(基于IntelliJ IDEA),我应该忽略哪些文件。

没有ContentProvider的SyncAdapter

我想为我想与服务器同步的内容实现SyncAdapter。 似乎这样做,您需要为您在SyncAdapter XML属性文件中指定的权限注册ContentProvider。 由于我不希望这些内容能被手机的其他部分访问,所以我还没有实现我自己的ContentProvider,并使用个人实现来存储这些内容。 你知道是否有可能使用SyncAdapter提供同步而不提供ContentProvider? 非常感谢你。

用animation展开ListView项目

我有一个ListView 。 最初, ListView包含一些数据。 当用户点击一个项目,另一个布局将被dynamic添加到该项目,所以它的高度将增加。 此时,当物品的高度增加时,立即显示修改后的物品。 但是,我想要的是这样做是animation,所以它逐渐增加项目的高度。