我创建了一个扩展View的类RoundIcon,该类包含setIconImage()方法:
public void setIconImage(int imageFromResources) {
iconImage = BitmapFactory.decodeResource(getResources(), imageFromResources);
iconWidth = iconImage.getWidth();
iconHeight = iconImage.getHeight();
refreshDrawableState();
}
Run Code Online (Sandbox Code Playgroud)
并且有一个方法onDraw():
@Override
protected void onDraw(Canvas canvas) {
if(px == 0 || py == 0)
{
px = 50;
py = 50;
}
canvas.drawCircle(px, py, circleRadius, circlePaint);
canvas.save();
if(iconImage != null)
{
int cardinalX = px - iconWidth/2;
int cardinalY = py - iconHeight/2;
canvas.drawBitmap(iconImage, cardinalX, cardinalY, iconPaint);
}
canvas.restore();
}
Run Code Online (Sandbox Code Playgroud)
问题是每次从主活动调用方法setIconImage()时都不执行onDraw()函数,因此图标在用户界面中不会改变.
有没有人知道如何修改代码,以便每次调用方法setIconImage时重绘图像?
我有一个Android应用程序与3 acitivtys:
A1 - 开始 - > A2 - 开始 - > A3 - 完成他的过程:开始 - > A1
(所以我不"完成();"一个应用程序.我用"startActivity(..);"用户交互后的整个时间开始下一个活动)
所以这3个活动中有一个循环.在每个活动中,我显示位于SD卡上的3-9张图片,我使用以下功能加载:
try
{
Uri selectedImageURI = Uri.parse(strImagePath);
File imgFile = new File(getRealPathFromURI(selectedImageURI, c));
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ivTmp.setImageBitmap(myBitmap);
}catch (Exception e)
{
return null;
}
Run Code Online (Sandbox Code Playgroud)
这一切都有效.但有时候(通过我的活动循环几次后),我的应用程序崩溃了..
Logcat告诉我:
01-16 13:42:15.863: DEBUG/dalvikvm(23161): GC_BEFORE_OOM freed 10K, 9% free 59019K/64400K, paused 29ms, total 30ms
01-16 13:42:15.863: ERROR/dalvikvm-heap(23161): Out of memory on a 8018704-byte allocation.
01-16 13:42:15.863: ERROR/AndroidRuntime(23161): FATAL EXCEPTION: main
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at …Run Code Online (Sandbox Code Playgroud) 我有一些自定义类BitmapStorage,没有附加到任何View或其他任何东西 - 一个实用程序.我有born_animation.xml文件,其中包含带有动画帧的<animation-list>:
<animation-list oneshot="true" >
<item drawable="@drawable/frame01" />
<item drawable="@drawable/frame02" />
</animation-list>
Run Code Online (Sandbox Code Playgroud)
我想使用Resources类将动画从xml文件加载为AnimationDrawable(因此它会对我进行所有解析),提取位图并将它们放到我的自定义存储类中.
我有的问题是:
Resources res = context.getResources();
AnimationDrawable drawable = (AnimationDrawable)res.getDrawable(R.drawable.born_animation);
assertTrue( drawable != null ); <= fails! it's null
Run Code Online (Sandbox Code Playgroud)
WTF?有人可以解释一下吗?代码编译好.所有资源都已到位.
我尝试了另一种方法 - 使用ImageView进行解析(如开发指南中所述)
ImageView view = new ImageView(context);
view.setBackgroundResource(R.drawable.born_animation);
AnimationDrawable drawable = (AnimationDrawable)view.getBackground();
assertTrue( drawable != null ); <= fails! it's null
Run Code Online (Sandbox Code Playgroud)
结果是一样的.它返回null drawable.
任何希望都会受到高度赞赏,提前谢谢.
我有4个锚点,我想在点击时向锚点添加一个当前类,并同时从其他3个类中删除该类.这是我的代码.我究竟做错了什么?
if ($("ul#thumb a").hasClass("current") {
$("ul#thumb a").removeClass("current");
$(this).addClass("current");
});
Run Code Online (Sandbox Code Playgroud)
我的HTML看起来像这样:
<ul id="thumbs">
<li>
<!-- intro page navi button -->
<a id="t0" class="active" name="t0">The Company</a>
<ul class="navi">
<li><a style="display:none"></a></li>
<li><a id="t1" name="t1">The Brief</a></li>
<li><a id="t2" name="t2">The Solution</a></li>
<li><a id="t3" name="t3">The Result</a></li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud) 我只是想知道是否有可能转换
PartialView("_Product", model)
Run Code Online (Sandbox Code Playgroud)
到HTML,所以我们可以用JSON发送回去?
return Json(result, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud) 我想在按钮点击时卸载我的应用程序.为此,我使用以下代码.
Uri packageURI = Uri.parse("package:"+packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
Run Code Online (Sandbox Code Playgroud)
它给了我结果,但我想直接删除而不点击对话框的"确定"按钮,并显示消息"此应用程序将被卸载".
我只想直接卸载应用程序.
我想设置的文本TextView为粗体的代码,而不是XML风格?
对我来说,实施和学习是一件非常有趣和新鲜的事情.我的申请有一些要求.为此,我搜索了很多,但找不到合适的,有价值的东西或链接.所以我在这里发帖子.功能是:
1)在三星设备中有Safety Assistance菜单,您可以在其中找到Emergency Mode选项.
2)现在Emergency mode我想在那时创建一个或多个主要联系人Emergency Mode.因此,现在在保持主页和音量按钮时,emergency将激活并通知通知.
3)现在emergency将在同一时刻激活GPS将自动启用,并且将自动捕获当前位置的两张照片,最后位置和两张照片将发送到Emergency mode作为主要联系人添加的联系人MMS.
注意:如果将启用录音机选项,则录音文件也将发送MMS.
所以,如果有人知道或有人实施,那么我非常感谢他/她.帮助将不胜感激.
在我的Android应用程序中,drawable文件夹中有许多图像.在我的布局中有两个按钮:后退和下一步按钮.在单击下一个和后退按钮时,2个不同的图像被加载到相同的布局上(所有图像都是通用的).
问题:我能够在下一个/后退按钮的点击上加载图像,但是在到达最后一个图像后,我想使我的下一个按钮禁用,并且后退按钮也是如此.当用户在第一张图像上时,应该禁用后退按钮.代码如下:
public class SequencerActivity extends Activity implements OnClickListener
{
private int imageCounter = 0;
private ImageView imageLoader;
private int[] imageList = {R.drawable.image_wo_lbl_0, R.drawable.image_wo_lbl_1, R.drawable.image_wo_lbl_2, R.drawable.image_wo_lbl_3, R.drawable.image_wo_lbl_4, R.drawable.image_wo_lbl_5,
R.drawable.image_wo_lbl_6, R.drawable.image_wo_lbl_8, R.drawable.image_wo_lbl_9,R.drawable.image_wo_lbl_10, R.drawable.image_wo_lbl_11};
@Override
public void onCreate(Bundle savedInstanceState)
{
setContentView(R.layout.parent_frame);//this one is the common parent layout for all image views
super.onCreate(savedInstanceState);
/*requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);*/
//int image1 = R.drawable.image_w_lbl_0;
imageLoader = (ImageView) findViewById(R.id.imageLoader);
//imageLoader.setImageResource(image1);
ImageButton next = (ImageButton) findViewById(R.id.next);
ImageButton back = (ImageButton) findViewById(R.id.back);
next.setOnClickListener(this);
back.setOnClickListener(this);
//show the default image
this.loadImage(imageList[imageCounter]); …Run Code Online (Sandbox Code Playgroud) SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(Menus.SEARCH));
searchView.setQueryHint(this.getString(R.string.search));
editSearch = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
editSearch.setHintTextColor(getResources().getColor(R.color.white));
searchView.setOnQueryTextListener(OnQuerySearchView);
private OnQueryTextListener OnQuerySearchView = new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String newText) {
if (TextUtils.isEmpty(newText)) {
listAllContact.clearTextFilter();
} else {
listAllContact.setFilterText(newText.toString());
}
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
String text = editSearch.getText().toString()
.toLowerCase(Locale.getDefault());
adapter.filter(text);
return true;
}
};
Run Code Online (Sandbox Code Playgroud)