我目前正在使用包含ImageViews的GridView,并希望我的图像背后有阴影.例如,在网格中可能有15个图像随时可见.在假设我希望我的屏幕以50fps渲染以显得平滑的情况下工作,我的数学表明我希望每个ImageView的总绘制时间不会差于大约1.3ms.
我看了一下Romain Guy如何在他的Shelves应用程序中做阴影:http: //code.google.com/p/shelves/source/browse/trunk/Shelves/src/org/curiouscreature/android/shelves/util/ ImageUtilities.java
这似乎有道理,所以我创建了以下类:
public class ShadowImageView extends ImageView {
private static final int SHADOW_RADIUS = 8;
private static final int SHADOW_COLOR = 0x99000000;
private static final Paint SHADOW_PAINT = new Paint();
static {
SHADOW_PAINT.setShadowLayer(SHADOW_RADIUS / 2.0f, 0.0f,
0.0f, SHADOW_COLOR);
SHADOW_PAINT.setColor(0xFF000000);
SHADOW_PAINT.setStyle(Paint.Style.FILL);
}
public ShadowImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void onDraw(Canvas canvas) {
final int containerWidth = getMeasuredWidth();
final int containerHeight = getMeasuredHeight();
canvas.drawRect(
SHADOW_RADIUS / 2.0f,
SHADOW_RADIUS / 2.0f,
containerWidth …Run Code Online (Sandbox Code Playgroud) android android-ui android-listview android-imageview android-gridview
我从类扩展的抽象类Activity包含三个Views,如以下XML片段中所述:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/bg">
<LinearLayout
android:id="@+id/top_border">
...
</LinearLayout>
<View
android:id="@+id/activity_content"
...
/>
<LinearLayout
android:id="@+id/bottom_border">
...
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在onCreate()方法中,我将此XML布局设置为内容视图.
我希望Activity扩展这个的s覆盖onCreate()并定义activity_content View剩余边界不可变.
例如这样:
abstract public class MyActivity extends Activity {
protected View mContent;
@Override
protected onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.common_layout);
initializeContent();
}
abstract void initializeContent();
}
class OneActivity extends MyActivity {
@Override
protected void initializeContent() {
mContent = View.inflate(this, R.layout.some_view, null); // i.e. concrete View …Run Code Online (Sandbox Code Playgroud) 对于我的Android应用程序,我需要在一个显示某些图像WebView.该应用程序在Android 2.1(API 7)及更高版本上运行.图像包含表格软文本,我面临的问题是,在Android版本2.1,2.2,2.3等中,它们总是模糊的,而在较新的版本中,例如4.0.3,它们很清晰.我测试了高/低分辨率图像,但结果是一样的.
为什么会这样?
我有一个listview,可以根据请求添加其他视图,由BaseAdapter维护.更新后如何保持滚动位置?
我知道这已被问了几次,但每次都提出了相同的解决方案,我已经尝试过,这是adapter.notifyDataSetChanged();在更新包含列表内容的ArrayList之后调用的.
如何确保保持滚动位置?
我正致力于片段转换.当我用第二个片段替换第一个片段时,它出现在第一个片段下面.我希望它移动到第一个片段之上.我怎样才能做到这一点?
fragmentTransaction.setCustomAnimations(animEnter, animExit, animPopEnter, animPopExit);
fragmentTransaction.replace(R.id.fragmentListView, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud) android android-custom-view android-ui android-fragments android-view
Android动画API有很多麻烦.
我需要在屏幕(600px*1024px)上从左下角到顶部动画图像(400px*600px).此外,在动画开始时,大部分图像应位于屏幕之外.
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/common_background">
<ImageView android:id="@+id/hand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="matrix"
android:src="@drawable/howto_throw_hand" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
活动的逻辑:
public class MyActivity extends Activity
{
ImageView hand;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
hand = (ImageView)findViewById(R.id.hand);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
//initial positioning
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
new ViewGroup.MarginLayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
)
);
layoutParams.setMargins(400, 600, 0, 0);
hand.setLayoutParams(layoutParams);
//making animation
TranslateAnimation animation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0, Animation.ABSOLUTE, -100,
Animation.RELATIVE_TO_SELF, 0, Animation.ABSOLUTE, -1000
); …Run Code Online (Sandbox Code Playgroud) 当视图出现/消失在屏幕上时,有没有办法获得回调?
我需要这个用于分析目的 - 例如。我需要检查人们看到一个视图的次数与他们点击它的次数。
我可以判断某个时间点是否有视图显示在屏幕上,但我想知道是否有回调。
另请注意,当视图的状态变为可见时我不感兴趣,甚至当视图被渲染时也不感兴趣(因为例如,在 ViewPager 中,第二页的视图在它们实际出现在屏幕上之前被渲染)。
我们针对某些场景做了几种解决方法,但我想要一些更通用的方法。我们需要在 ListViews、GridViews、ScrollViews 和 ViewPagers 中使用它,并且它们中的每一个都提出了不同的挑战。
现在我正在使用uiautomator像这样转储UI:
adb shell uiautomator dump
Run Code Online (Sandbox Code Playgroud)
它工作正常,但执行它需要大约3秒钟.所以我想知道是否有更快的方法呢?就像创建一个转储UI的服务一样,还是需要一段时间?
我想知道在我的android项目中删除ldpi/mdpi/hdpi文件夹的缺陷是什么?我可以只复制drawable文件夹中的所有图像吗?
我确实看到以下关于Android开发的UI开发链接 http://developer.android.com/guide/practices/ui_guidelines/icon_design.html http://developer.android.com/guide/practices/screens_support.html
谢谢
PS:我指的是所有正在使用的图像,背景,图标,菜单等......
我和其他一些Android应用用户运行Galaxy Nexus.我们大多数人发现这款应用程序的速度非常快,但是有一些人报告称它在Galaxy Nexus上的速度也非常慢.听到他们告诉我按钮,滚动等都很慢,我很震惊.该应用程序的主要视图ListView包含许多图像,文本视图等.事实上,如果您想深入挖掘,可以在Google Play上免费查看该应用程序.我正在尝试编制可能导致此问题的清单.
这是我到目前为止所拥有的:
还有其他想法吗?
更重要的是,有没有办法检测(甚至调整!)潜在的问题?