I have a widget which starts an activity when it is clicked. I'd like to have some kind of fancy animation to display this activity, rather than the standard scroll-from-right of Android. I'm having problems setting it, though. This is what I have:
slide_top_to_bottom.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="-100%" android:toXDelta="0" android:duration="100" />
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="50" />
</set>
Run Code Online (Sandbox Code Playgroud)
...在anim.xml中引用
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="50%"
android:animation="@anim/slide_top_to_bottom" />
Run Code Online (Sandbox Code Playgroud)
但那我从哪里参考呢?我已经尝试了我要插入的活动的基本元素,以及清单中的activitiy条目,两次都是
android:layoutAnimation="@+anim/anim"
Run Code Online (Sandbox Code Playgroud)
我可能做错了.任何帮助深表感谢!
我正在努力使用EditText和Spannable文本对象,这些天,我已经阅读了大约十次的API文档,即使我不确定我是否理解正确.所以我正在寻找一个向我展示如何利用EditText和Spannable的例子.
假设我有一个ListActivity,现在我想要在列表项上捕获长按事件,因为我使用下面的代码块(get google后),但它不起作用!请帮忙!
public class InboxActivity extends ListActivity {
this.getListView().setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(InboxActivity.this, "postion: " + getListView().getSelectedItemPosition(), Toast.LENGTH_SHORT).show();
return true;
}
});
}
Run Code Online (Sandbox Code Playgroud)
我也在网上看到了一些带有contextmenu的代码但是我没有办法从上下文菜单打开的位置获取listItem的位置.
当我创建我的活动时,我设置了一个Spinner,为它分配一个监听器和一个初始值.我知道onItemSelected在应用程序初始化期间会自动调用回调.我觉得很奇怪的是,当设备旋转时会发生两次这种情况,这会导致我遇到一些问题,我不得不绕过它.如果微调器初始选择为零,则不会发生这种情况.我能够隔离问题,这是触发它的最简单的活动:
public class MainActivity extends Activity implements OnItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("Test","Activity onCreate");
setContentView(R.layout.activity_main);
((Spinner)findViewById(R.id.spinner1)).setSelection(2);
((Spinner)findViewById(R.id.spinner1)).setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> spin, View selview, int pos, long selId)
{
Log.i("Test","spin:"+spin+" sel:"+selview+" pos:"+pos+" selId:"+selId);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {}
}
Run Code Online (Sandbox Code Playgroud)
这是启动应用程序然后旋转设备时显示的logcat:
I/Test( 9881): spin:android.widget.Spinner@4052f508 sel:android.widget.TextView@40530b08 pos:2 selId:2
I/Test( 9881): Activity onCreate
I/Test( 9881): spin:android.widget.Spinner@40535d80 sel:android.widget.TextView@40538758 pos:2 selId:2
I/Test( 9881): spin:android.widget.Spinner@40535d80 sel:android.widget.TextView@40538758 pos:2 selId:2
Run Code Online (Sandbox Code Playgroud)
这是预期的行为吗?我错过了什么吗?
我需要能够在屏幕上旋转视频,因此我创建了一个自定义TextureView,它在MediaPlayer上提供了一个便利层,类似于VideoView当前实现的方式.这个Android博客文章说下面关于TextureView:
由于SurfaceView的内容不在应用程序窗口中,因此无法有效地转换(移动,缩放,旋转).这使得在ListView或ScrollView中使用SurfaceView变得很困难.SurfaceView也无法与UI工具包的某些功能正确交互,例如淡化边缘或View.setAlpha().
为了解决这些问题,Android 4.0引入了一个名为TextureView的新小部件,它依赖于硬件加速的2D渲染管道和SurfaceTexture.TextureView提供与SurfaceView相同的功能,但与SurfaceView不同,它表现为常规视图.例如,您可以使用TextureView来显示OpenGL场景或视频流.TextureView本身可以是动画,滚动等.
然而,看起来TextureView正在努力播放视频.我正在测试的目标设备有一个1.2Ghz Rockchip RK3066双核CPU,四核Mali-400 GPU(ARM)和1GB RAM.在此设备上使用VideoViews的相同代码表现不错,但TextureViews在播放时"口吃"或根本不显示(左上角带有白色方框的黑框),具体取决于具体设备.TextureViews使用英特尔提供的x86"设备"在仿真器上运行良好.
这种性能是否会受到影响,或者我应该在其他地方寻找问题?谢谢
我在Android上处理动态创建的按钮时遇到问题.我正在创建N个按钮,单击按钮时我必须执行相同的方法,但我必须知道单击了哪个按钮.
for (int i = 0; i < NO_BUTTONS; i++){
Button btn = new Button(this);
btn.setId(2000+i);
...
btn.setOnClickListener((OnClickListener) this);
buttonList.addView(btn);
list.add(btn);
Run Code Online (Sandbox Code Playgroud)
目前我正在为每个按钮添加ID,我正在使用下面的方法查看单击了哪个按钮.(行btn.setId(2000+i);和btn.setOnClickListener((OnClickListener) this);).此方法也在活动中实现.
@Override
public void onClick(View v) {
switch (v.getId()){
case 2000: selectButton(0);
break;
...
case 2007: selectButton(7);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说不太好看,所以我想问有没有更好的方法呢?或者如何向onclick事件发送一些信息?有什么建议?
Android设计模式指南说小部件的内容和布局可以动态调整到用户通过调整大小操作定义的大小:小部件的设计指南
设计指南中提供的示例:

但我在文档中没有看到如何实现这一目标.我们如何根据调整大小操作更改布局?任何有关该方法的想法将不胜感激.
我有一个显示图像的GridView,不幸的是,这些图像的大小不同.它们显示在两行文本之间:
text1.1 text1.2
ImageView(IMAGE1) ImageView(IMAGE2)
text2.1 text2.2
text3.1
ImageView(IMAGE3)
text4.1
Run Code Online (Sandbox Code Playgroud)
等等....
如果IMAGE1是相同的高度IMAGE2,一切都很好,但如果IMAGE1是长比IMAGE2,text2.1会碰上text3.1(填充似乎没有多大帮助,因为有太多的它,当图像的同样的高度).
我知道有一种方法可以在ImageView中拉伸图像,因此它们的高度相同,但是可以保持图像不变并以某种方式设置行高吗?
请提供StackView Widget示例源代码.http://developer.android.com/resources/samples/StackWidget/index.html重定向到示例链接http://developer.android.com/tools/samples/index.html.
Sample链接表明该示例可以在"/ samples/android- /"文件夹下找到.但我没有在我的Windows 7 PC中从api级别11到16在这些文件夹下找到任何样本.
在App小部件部分,经常引用这个示例项目,但遗憾的是我找不到源代码.请帮帮我.
我正在尝试为我的应用程序创建一个小部件.从我阅读一个Android开发者网站,您的onclick听众都需要有一个Intent.但是如果我只是想让我的按钮更新小部件本身的数据并且我不想开始新活动呢?
这是一些Android演示代码:
Intent intent = new Intent(context, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// Get the layout for the App Widget and attach an on-click listener
// to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
Run Code Online (Sandbox Code Playgroud)
我想要一个按钮,当我点击进行http网络呼叫,然后在小部件中显示结果.如果我必须使用意图,我该怎么做呢?此外,我需要能够区分单击哪些按钮.
为什么小部件使用意图而不是正常的onclick侦听器,它调用像活动这样的函数?
编辑
我的widget提供者:
public class MyWidgetProvider extends AppWidgetProvider {
private static final String MyOnClick1 = "myOnClickTag1";
private static final String MyOnClick2 = "myOnClickTag2";
private static final String MyOnClick3 = "myOnClickTag3";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) …Run Code Online (Sandbox Code Playgroud) android ×10
android-widget ×10
animation ×1
button ×1
gridview ×1
height ×1
performance ×1
row-height ×1