如何在不使用动画(android.view.animation.*)的情况下以编程方式转换任意视图?
API 11介绍setTranslationX和setTranslationY,setX和setY,和getMatrix-所有这些都可以用来实现什么我要找的.但是,我似乎无法找到先前API级别的等效项.
android.view.animation.TranslateAnimation它getMatrix在实现中的用途(早在API 4),但它始终是一个私有API.
有没有办法在不诉诸反思的情况下实现这一目标?
我正在尝试使用ActionBarSherlock库为主页图标设置自定义图标.我试图abHomeLayout在自定义主题中使用属性设置自定义布局.但它对我不起作用.唯一的方法,如何设置它,是abIcon为我的自定义drawble 设置属性,但我不能为这个drawable设置一些水平填充.是否有任何示例或abHomeLayout属性的问题?
我试图从主题和样式中读取属性值,这些属性值是为比运行我的应用程序更新的平台而设计的.
请不要问为什么.如果您对我编写的库有所了解,那么您应该已经知道我喜欢推动平台的功能:)
我的假设是,在编译Android样式时,属性常量是用于键的因素,因此理论上应该能够以某种方式在任何平台上读取.这就是我观察到在我的其他库中使用布局XML而没有遇到任何问题.
这是一个显示问题的基本测试用例.这应该使用Android 3.0+编译.
<resources>
<style name="Theme.BreakMe">
<item name="android:actionBarStyle">@style/Widget.BreakMe</item>
</style>
<style name="Widget.BreakMe" parent="android:Widget">
<item name="android:padding">20dp</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
android:actionBarStyle具体使用这一事实是无关紧要的.应该理解的是,它的属性仅从Android 3.0开始才可用.
以下是我在Android 3.0之前的平台上尝试访问这些值的方法.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Break Me"
style="?android:attr/actionBarStyle"
/>
Run Code Online (Sandbox Code Playgroud)
和
<declare-styleable name="Whatever">
<item name="datStyle" format="reference" />
</declare-styleable>
<style name="Theme.BreakMe.Take2">
<item name="datStyle">?android:attr/actionBarSize</item>
</style>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Break Me"
style="?attr/datStyle"
/>
Run Code Online (Sandbox Code Playgroud)
和
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.actionBarStyle, outValue, true);
Run Code Online (Sandbox Code Playgroud)
和
int[] Theme = new int[] { android.R.attr.actionBarSize };
int Theme_actionBarSize = 0;
TypedArray a = context.obtainStyledAttributes(attrs, Theme);
int …Run Code Online (Sandbox Code Playgroud) 我很好奇在针对API 11或更高版本时,Android 3.0+上如何使用(如果有的话)onPrepareOptionsMenu(Menu)(以及扩展名onPreparePanel(int, View, Menu)).
我的想法如下:
一个Activity人ActionBar接收其内容onCreateOptionsMenu(Menu),您可以从中扩展XML菜单资源,直接添加项目或两者的某种组合.活动的任何片段也将接收此呼叫,并可选择执行相同操作.
要更新ActionBar上的项目,您可以保持Menu实例或呼叫invalidateOptionsMenu(),然后onCreateOptionsMenu(Menu)再次结束呼叫.
onPrepareOptionsMenu(Menu)那么,是否仍然只能支持不针对API 11或更新版本的遗留应用程序?
是否可以呼叫getActionBar().hide()和getActionBar().show()触发呼叫onPrepareOptionsMenu(Menu)?
添加或删除片段会以某种方式触发此操作吗?
我不知道我应该在哪里解决这个问题,如果这是我的错,那么Picasso Lib Wrong或Cardview Library中就会有一些东西.
基本上我有一个CardView图像(全卡覆盖)和A TextView覆盖.
在Android 5.0设备上运行代码时,一切正常,Image获取其圆角.
但是,如果我在5.0之前的设备上运行它,图像重叠Cardlayout并且没有圆角.
你可以看看这个图片的比较:

以下是一些代码片段:
layout_row.xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/pandaImage"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_centerInParent="true"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/pandaName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/pandaImage"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@color/photo_tint"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="24sp" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
加载图像的Recycler Adapter:
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
Photo p = photos.get(i);
Picasso.with(mContext).load(p.getUrl()).fit().into(viewHolder.mImage);
viewHolder.mPandaName.setText(p.getTitle());
}
Run Code Online (Sandbox Code Playgroud) 目前我有这一系列的观点:
ImageView activityImageViews[] = {
(ImageView) rootView.findViewById(R.id.img_activity_1),
(ImageView) rootView.findViewById(R.id.img_activity_2),
(ImageView) rootView.findViewById(R.id.img_activity_3),
(ImageView) rootView.findViewById(R.id.img_activity_4)
};
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用Butterknife来注入所有这些观点?我需要将它们保存在一个数组中(或者以某种方式让它可以迭代它们).
一些第三方库使用钩子进入活动生命周期才能正常工作 - 例如,Facebook SDK(https://developers.facebook.com/docs/android/login-with-facebook/).
我在弄清楚如何使用单活动流+砂浆设置干净地协调这个模型时遇到了一些麻烦.
例如,如果我想使用Facebook登录作为登录流程的一部分(带有FlowView/FlowOwner),而不是活动中的其他内容,如果您需要在onCreate中为该特定流程挂钩,那么最明智的方法是将其解除, onResume,onPause,onDestroy,onSaveInstanceState,onActivityResult等?
最明确的路径是什么并不是很明显 - 为每个生命周期活动阶段创建一个observable并订阅它的流程?如果您不小心,似乎该路径会快速转移到相同的Android生命周期.有没有更好的办法?
我喜欢单一的活动模型,如果可能的话,我真的希望保持一切由流/迫击炮管理,而不是活动.或者我是否以一种从根本上使其变得更加困难的方式来思考这个问题?
我有一个文档生成器,目前包含大约200个项目的查询,但完成后可能会超过500个.我最近注意到一些映射表示延迟加载.这给文档生成器带来了问题,因为它需要根据生成的文档访问所有这些属性.
虽然我知道DataLoadOptions可以在上下文中指定,但这会导致我必须明确指定可能加载的每一列.这是1000的北方,因为所有数据提取都发生在一个上下文中.
有没有办法让我为上下文禁用延迟加载或显式启用急切加载以忽略延迟加载属性?也许扩展DB上下文类并覆盖一些东西?
我正在尝试从清单中的定义加载与当前活动和/或其父应用程序关联的徽标.此技术已成功加载与两者相关联的标题和图标,但徽标始终返回null或0.
以下是我正在使用的清单中的相关信息:
<application
android:icon="@drawable/ic_launcher"
android:logo="@drawable/ad_logo"
android:label="@string/app_name"
android:hardwareAccelerated="true">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:logo="@drawable/ad_logo">
Run Code Online (Sandbox Code Playgroud)
与activity被上述定义的酶活性的一个实例,我曾尝试以下(结果注释内联):
PackageManager pm = activity.getPackageManager();
ComponentName cn = activity.getComponentName();
ApplicationInfo ai = activity.getApplicationInfo();
//ACTIVITY LABEL: Works
pm.getActivityInfo(cn, PackageManager.GET_ACTIVITIES).loadLabel(pm);
//APPLICATION LABEL: Works
ai.loadLabel(pm);
//APPLICATION LABEL: Works
pm.getApplicationLabel(ai);
//ACTIVITY ICON: Works
pm.getActivityInfo(cn, PackageManager.GET_ACTIVITIES).loadIcon(pm);
//ACTIVITTY ICON: Works
pm.getActivityIcon(cn);
//APPLICATION ICON: Works
pm.getApplicationIcon(ai);
//APPLICATION ICON: Works
ai.loadIcon(pm);
//ACTIVITY LOGO: Does not work
pm.getActivityInfo(cn, PackageManager.GET_ACTIVITIES).loadLogo(pm);
//ACTIVITY LOGO: Does not work
pm.getActivityInfo(cn, PackageManager.GET_ACTIVITIES).logo
//ACTIVITY LOGO: Does not work
pm.getActivityLogo(cn);
//APPLICATION LOGO: …Run Code Online (Sandbox Code Playgroud) 我试图动画两层drawable,以达到后蜂窝不确定进度指标的效果.XML非常简单,但似乎只有一个层在Honeycomb之前的平台上运行时才会生成动画.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:drawable="@drawable/abs__spinner_48_outer_holo"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="1080" />
</item>
<item>
<rotate
android:drawable="@drawable/abs__spinner_48_inner_holo"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="720"
android:toDegrees="0" />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
这仅仅是这些平台的限制,还是我可以使用的替代语法(通常是在API11之前或专门针对API11)来实现所需的功能?
android ×9
android-xml ×1
butterknife ×1
c# ×1
cardlayout ×1
drawable ×1
lazy-loading ×1
linq ×1
linq-to-sql ×1
mortar ×1
picasso ×1
square-flow ×1