我有一个工作的viewpager示例,使用我从教程中获得的代码.该教程由Lauren Darcey和Shane Conder编写,他们显然是专家(我是Android新手).代码粘贴在下面.当用户水平滑动时,此代码正在做的是膨胀(前进)和销毁(后面).只有5页.似乎将它们全部膨胀会更聪明,然后让用户进行所有刷卡而不进行充气/破坏.就像它是一个大的宽页面(例如Windows Phone 7中的Panarama和Pivot控件).
此外,如果其中一个页面上有谷歌地图,则此代码会爆炸.它吹响了第二次通货膨胀(不知道为什么),如果它们只是一次充气就不会发生这种情况.
是否有必要以这种方式完成的原因?按照我建议的方式有没有可用的例子?谢谢,加里布莱克利
private class MyPagerAdapter extends PagerAdapter {
public int getCount() {
return 5;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0:
resId = R.layout.farleft;
break;
case 1:
resId = R.layout.left;
break;
case 2:
resId = R.layout.middle;
break;
case 3:
resId = R.layout.right;
break;
case 4:
resId = R.layout.farright;
break;
}
View view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return …Run Code Online (Sandbox Code Playgroud) 以下消息处理程序可以很好地从我的服务接收消息...
private Handler handler = new Handler()
{
public void handleMessage(Message message)
{
Object path = message.obj;
if (message.arg1 == 5 && path != null) //5 means its a single mapleg to plot on the map
{
String myString = (String) message.obj;
Gson gson = new Gson();
MapPlot mapleg = gson.fromJson(myString, MapPlot.class);
myMapView.getOverlays().add(new DirectionPathOverlay(mapleg.fromPoint, mapleg.toPoint));
mc.animateTo(mapleg.toPoint);
}
else
{
if (message.arg1 == RESULT_OK && path != null)
{
Toast.makeText(PSActivity.this, "Service Started" + path.toString(), Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(PSActivity.this,"Service error" + …Run Code Online (Sandbox Code Playgroud) 我发现谷歌搜索的所有内容都表明,以下任何一种方法都会将双倍减少到两位小数.
double roundToFourDecimals(double d)
{
DecimalFormat twoDForm = new DecimalFormat("#.##");
double myD = Double.valueOf(twoDForm.format(d));
return myD;
}
double nextLon = (double)Math.round(bnextLon * 100.0) / 100.0;
Run Code Online (Sandbox Code Playgroud)
但这对我都不起作用.double的值是3.3743984E7,结果是相同的.怎么了?
我使用Eclipse(3.72)开发Android应用程序.我不小心碰到了键盘上的东西,现在有这些浅灰色的格式化字符显示.他们非常分心.我到处都可以想到如何摆脱它们.
我在编辑器中恢复默认值无济于事.我在谷歌上搜索只是为了找到reccos"取消选中删除空白字符",但这不是找到的地方.
救命!谢谢,加里
我在Eclipse中将一个.java文件从一个项目导入到另一个项目.在这样做的过程中,Eclipse从源项目中删除了所有的.java文件和我的.apk文件.我知道我可以从.apk文件重建它们,但目前唯一的一个是在我的LG手机上.
如何将手机上的.apk从手机上取下来?我是否必须将手机设为root才能看到Data文件夹?我有Android文件管理器,但我没有看到如何上传到电脑.谢谢,加里
我在2011年在该论坛上的帖子中发现了以下粘贴的代码。我使用计时器触发doSomeWork的执行,但doSomeWork产生了一个asynctask,并且(如我所知)asynctasks只能从UI线程中产生。因此,我转换为使用Handler的postDelayed函数。
现在,此代码确实每十秒钟调用一次doSomeWork,而我的asynctask不再有问题。但是,当我调用stopRepeatingTask()时,它不会停止doSomeWork的执行-它会每十秒钟不断地被调用。
此代码在服务中,已经调用了stopSelf(),但代码仍在运行。Android系统甚至没有将服务显示为正在运行,但仍在调用doSomeWork。
怎么了?我该如何阻止它?谢谢,加里
private int m_interval = 5000; // 5 seconds by default, can be changed later
private Handler m_handler;
@Override
protected void onCreate(Bundle bundle) {
// ...
m_handler = new Handler();
}
Runnable m_statusChecker = new Runnable() {
@Override
public void run() {
doSomeWork(); //this function can change value of m_interval.
m_handler.postDelayed(m_statusChecker, m_interval);
}
};
void startRepeatingTask() {
m_statusChecker.run();
}
void stopRepeatingTask() {
m_handler.removeCallbacks(m_statusChecker); // <--this does not appear to work
}
Run Code Online (Sandbox Code Playgroud) 所以我的所有应用程序在5.0上运行时都会遇到此异常...
java.lang.IllegalArgumentException:Service Intent必须是显式的:Intent {act = com.android.vending.licensing.ILicensingService}
谷歌搜索后,我发现这是由LicenseChecker.java中的Google Licensing代码中的错误引起的,但建议的更改有点不同,所以我不知道该怎么做.它让我感到震惊,我们应该为Googles代码制作mod.
我的LicenseChecker.java中的可疑代码是......
Log.i(TAG, "Binding to licensing service.");
try {
boolean bindResult = mContext
.bindService(
new Intent(
new String(
Base64.decode("Y29tLmFuZHJvaWQudmVuZGluZy5saWNlbnNpbmcuSUxpY2Vuc2luZ1NlcnZpY2U="))),
this, // ServiceConnection.
Context.BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)
我们应该补充一下
serviceIntent.setPackage("com.android.vending");
Run Code Online (Sandbox Code Playgroud)
代码中的某个地方.
所以我的问题是(1)这真的是修复吗?(2)如果是这样,修改后的代码到底应该是什么样的?谢谢,迪恩
我有一个相当大的 viewpager 应用程序,我想将其重新设计为 Material Design。我使用 Android Studio 创建了一个全新的应用程序,该应用程序除了演示有效的 viewpager、选项卡和 Material Design 之外什么都不做。新应用的外观正是我想要的。
检查新应用程序时,我发现 AS 在启用 Material Design 的中间目录中生成了大量有用的资源代码。因此,AS 首先根据我在“新项目”过程中的选择生成 src/ 代码,然后该代码中的某些内容导致构建过程生成所有这些有用的 Material Design 支持代码。
例如,生成的应用程序有一个以...开头的样式 xml。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
Run Code Online (Sandbox Code Playgroud)
如果你在 DarkActionBar 上按 ctrl-b 它会跳转到一个巨大的文件。. .
C:\Users\Gary\AndroidstudioProjects\MDShell\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.3.0\res\values\values.xml
Run Code Online (Sandbox Code Playgroud)
包含定义。我希望构建过程为我的应用程序执行相同的生成。
编辑:这是我的问题的答案......一旦我在gradle中包含以下两行,我需要的一切都会在我的应用程序中生成
编译'com.android.support:appcompat-v7:23.3.0' 编译'com.android.support:design:23.3.0'