我正在使用库22.1版中AppCompatActivity引入的新功能AppCompat.
当我扩展此Activity时,硬件后退按钮不再弹出我的Fragments的后堆栈,而是关闭Activity.
以下是我在活动中更改片段的方式:
public void changeFragment(Fragment f) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_holder, f);
ft.addToBackStack(null);
ft.commit();
}
Run Code Online (Sandbox Code Playgroud)
如果我改变MainActivity extends AppCompatActivity对MainActivity extends Activity问题是否会消失,我能够通过我的片段倒退.
更改呼叫getFragmentManager()到getSupportFragmentManager()运行Android <5.0不失材料的主题,这是贯彻的主要原因在设备的结果AppCompatActivity摆在首位.
我的清单中引用的样式 <application android:theme="@style/AppTheme">
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/primary_material_light</item>
<item name="colorPrimaryDark">@color/primary_dark_material_light</item>
<item name="colorAccent">@color/accent_material_light</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我有一个图像,我用它作为RelativeLayout的背景.图像需要水平平铺以制作图案.
我可以使用以下代码将图像水平平铺:
BitmapDrawable b3 = (BitmapDrawable)getResources().getDrawable(R.drawable.background);
b3.setTileModeX(Shader.TileMode.REPEAT);
v.findViewById(R.id.layout).setBackgroundDrawable(b3);
Run Code Online (Sandbox Code Playgroud)
问题是图像也垂直拼贴.它似乎在垂直方向处于"钳位"模式,而在水平方向处于"重复"模式.这是一个截图:

如您所见,图像比它占据的空间略小,底边被"夹紧".
如何将图像设置为垂直拉伸但水平平铺?
我正准备在Android市场上发布应用程序,我已经为它创建了促销图片和截图.在我发布之前,很高兴看到市场页面会是什么样子.有预览的方法吗?
我想保存我的应用程序的状态,以便在从关闭状态重新打开时,最后一个片段是可见的并且后备堆栈被保留.我希望每次关闭应用程序时都保留此状态,而不仅仅是方向更改或系统杀死应用程序以释放资源(就像使用onSaveInstanceState()/ 时的情况一样)onRestoreInstanceState().
到目前为止,我已经能够通过将状态保存到SharedPreferences并在以后恢复它来按计划恢复上一个片段及其状态.但是,这不会保留片段后备栈,因此当用户加载应用程序并按下后退按钮以在应用程序流中"向上"移动时,应用程序退出而不是上升.
此时我需要的是能够访问应用程序后台堆栈并在必要时将其保存到捆绑包中,就像系统所做的那样onSaveInstanceState().我已经阅读了文档,FragmentManager.saveFragmentInstanceState()但我不知道如何使用它来实现我的目标.任何人都能指出我正确的方向吗?
我正在使用Android兼容性库中的片段实现.
我希望有一个ProgressDialog确定的进度条而不是默认的微调器.这似乎很简单:ProgressDialog有方法setIndeterminate,方法show接受一个布尔值来表示不确定性.但这些方式对我不起作用!使用微调器,对话框仍然不确定.如何改变行为?
我正在使用最新版本的支持库,允许在运行Android <3.0版本的设备上使用Fragments.每当我想切换当前片段时,我都会使用以下代码:
public void displayFragmentInMainView(Fragment f) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left,
android.R.anim.slide_in_left, android.R.anim.slide_out_right);
transaction.replace(R.id.fragment_holder, f);
transaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
以下是定义其中一个过渡动画的XML:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-50%p" android:toXDelta="0"
android:duration="500"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="500" />
</set>
Run Code Online (Sandbox Code Playgroud)
正如您在上面的XML中所看到的,动画的持续时间设置为500.根据开发人员文档,此处指定的单位是ms(时间的度量).
我通过测试注意到设备之间的动画持续时间不同.如果我在持续时间内指定ms值,为什么会这样呢?
以下是我测试过的设备和结果(主观):
HTC Legend :(低端手机,CPU速度慢,Android 2.3.3)动画流畅,持续时间与我想要的一样长.
三星Galaxy S :(中档CPU,Android 2.1)动画有点不稳定,比Legend更快
模拟器 :(在四核iMac,Android 4.0上运行)动画非常快,有时候太快,你甚至看不到它
基于此,似乎持续时间不是以ms为单位真正测量的,而是取决于CPU速度.有没有人注意到类似的结果?有没有办法设置它,以便动画速度在设备上是统一的,就像阅读文档后所期望的那样?
android android-animation android-fragments android-support-library
我有一个日期字符串,格式如下:
Thu Oct 20 14:39:19 PST 2011
我想使用DateFormat解析它以获取Date对象.我正在尝试这样:
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT);
Date date = df.parse(dateString);
Run Code Online (Sandbox Code Playgroud)
这给出了ParseException("不可解析的日期").
我也试过这个:
SimpleDateFormat df = new SimpleDateFormat("EEE-MMM-dd HH:mm:ss z yyyy");
Run Code Online (Sandbox Code Playgroud)
结果相同.
这是正确的SimpleDateFormat字符串吗?有没有更好的方法来解析这个日期?
我正在尝试限制应用程序免受系统字体缩放的影响。我已经尝试了很多解决方案,但没有一个有帮助。他们中的大多数人都告诉我们使用 dp 而不是 sp 来确定文本大小,但在撰写中,如果我是正确的,我们只能使用 sp,因为它需要一个文本单元。有没有正确的方法来限制我们使用 jetpack compose 完成的应用程序中的字体缩放?请帮忙 。
就像标题所说的那样.是否有意将Android市场推向"我的应用"页面?如果应用程序已过期,我会显示一个对话框.我想在对话框上放一个按钮,直接指向"我的应用程序"页面,以便用户可以下载更新.
编辑:为清楚起见,我不是在谈论我的应用程序的详细信息页面.我在谈论Android Market应用程序的"我的应用程序"部分.
根据本教程,我已经为移动后端入门应用编写了一个Android客户端.一切都适用于实施部分Continuous Queries.
我写了一个查询,我从code(onPostCreate())中的正确位置调用它,但是查询永远不会返回任何数据.
我不相信这是一个身份验证问题,因为我能够成功地进行其他调用.
这是永远不会返回结果的代码:
CloudCallbackHandler<List<CloudEntity>> handler = new CloudCallbackHandler<List<CloudEntity>>() {
@Override
public void onComplete(List<CloudEntity> results) {
for (CloudEntity entity : results) {
UserLocation loc = new UserLocation(entity);
mUserLocations.remove(loc);
mUserLocations.add(loc);
drawMarkers();
}
}
@Override
public void onError(IOException e) {
Toast.makeText(getApplicationContext(), e.getMessage(),
Toast.LENGTH_LONG).show();
}
};
CloudQuery query = new CloudQuery("UserLocation");
query.setLimit(50);
query.setSort(CloudEntity.PROP_UPDATED_AT, Order.DESC);
query.setScope(Scope.FUTURE_AND_PAST);
getCloudBackend().list(query, handler);
Run Code Online (Sandbox Code Playgroud)
使用调试器,我已经验证了该getCloudBackend().list()行的执行情况,但该onComplete()方法从未被命中,也没有onError().
以下是一个完美运行的调用示例:
UserLocation self = new UserLocation(super.getAccountName(),
gh.encode(mCurrentLocation));
getCloudBackend().update(self.asEntity(), updateHandler);
Run Code Online (Sandbox Code Playgroud)
基本上,getCloudBackend().update()工作,而 …
google-app-engine android google-cloud-messaging google-cloud-endpoints
android ×10
google-play ×2
android-view ×1
back-stack ×1
c# ×1
date-format ×1
font-scaling ×1
kotlin ×1
math ×1
square-root ×1