小编Goo*_*ead的帖子

是否可以在xml描述中旋转drawable?

我正在创建一个应用程序,其资源可以重复使用(因为按钮总是相同,但是镜像或旋转).我确实想要使用相同的资源,所以我不必再添加3个与原始资源完全相同但又已旋转的资源.但我也不想将代码与可以在XML中声明的内容混合,或者使用会花费处理时间的矩阵进行转换.

我在XML中声明了一个两个状态按钮.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/and_card_details_button_down_left_onclick" /> <!-- pressed -->
    <item android:drawable="@drawable/and_card_details_button_down_left" /> <!-- default -->
</selector>
Run Code Online (Sandbox Code Playgroud)

我想重复使用drawable,因为它会相同但旋转90º和45º并且我将按钮分配为drawable.

<Button android:id="@+id/Details_Buttons_Top_Left_Button"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/details_menu_large_button" />
Run Code Online (Sandbox Code Playgroud)

我知道我可以用一个RotateDrawable或一个旋转它,Matrix但正如我已经解释过的那样,我不喜欢这种方法.

是否有可能直接在XML上实现这一点,或者您认为最好的方法是什么?放置所有资源但旋转,在代码中旋转它们?

---编辑--- @dmaxi的答案很棒,这是如何将它与项目列表相结合:)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <rotate 
        android:fromDegrees="90"
        android:toDegrees="90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:drawable="@drawable/and_card_details_button_up_onclick"/>
    </item>

    <item>
        <rotate
        android:fromDegrees="90"
        android:toDegrees="90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:drawable="@drawable/and_card_details_button_up_onclick"/>
    </item>

</selector>
Run Code Online (Sandbox Code Playgroud)

android drawable android-layout android-xml

99
推荐指数
4
解决办法
8万
查看次数

使用主干js加载模板

我开始在javascript开发中,做了一个简单的项目,使用node.js作为rest API和使用主干的客户端,一切看起来都很完美,直到我想从我的js中获取我的模板.

我找到了不同的方法,其中一些有一些时间(比如一岁),但我无法理解哪一种可能更好:

下划线中的外部模板

  • 使用require.js加载文本插件.

    专业 - >根据需要加载不同的模板.

    cons - >我不喜欢将所有内容放入"加载器"功能的方法......

    define(["TemplateEngine", "text!templates/template.html"], function(...
    
    Run Code Online (Sandbox Code Playgroud)

RequireJS:加载模块,包括模板和CSS

  • 使用AJAX请求加载模板的函数.

    专业 - >您可以加载所需的模板并添加本地存储空间.

    cons - >似乎我必须将所有模板合并到一个生成环境的文件中.

    function() {
    
    var templateLoader = {... $.get calls ...}   
    
    Run Code Online (Sandbox Code Playgroud)

异步加载下划线模板的最佳方法

  • 还有一个用于模板加载的Jquery插件,我非常喜欢,但似乎它没有发布?

http://api.jquery.com/jQuery.template/

似乎需要是最好的方法,但也许我错过了一些东西,我不想让事情尽可能干净,因为我在学习/玩乐阶段:D

任何有良好结构或任何亮点的好文章或github项目都将受到赞赏.

谢谢.

请原谅任何重大的拼写错误,而不是英语发言者:)

--EDIT--发现了一些有趣的视频,了解如何使用require.js启动和包装内容 http://www.youtube.com/watch?v=VGlDR1QiV3A

http://www.youtube.com/watch?v=M-wjQjsryMY

javascript ajax requirejs backbone.js underscore.js

11
推荐指数
1
解决办法
1万
查看次数

关闭DialogFragment onClick

我试图制作一个可以在点击时被解雇的DialogFragment,经过一些搜索我决定采用这种实现方式:

public class ErrorDialogFragment extends RoboDialogFragment {

private static final String MESSAGE_ARG = "message";
private TextView text;

public ErrorDialogFragment newInstance (String message){
    ErrorDialogFragment f = new ErrorDialogFragment();

        Bundle args = new Bundle();
        args.putString(MESSAGE_ARG, message);
        f.setArguments(args);

        return f;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {     
    View v = inflater.inflate(R.layout.error_dialog_fragment, container, false);
    v.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            ErrorDialogFragment.this.dismiss();
        }
    });

    text = (TextView) v.findViewById(R.id.error_dialog_text_textView);
    text.setText(getArguments().getString(MESSAGE_ARG));
    return v;
}

@Override
public void onCreate(Bundle savedInstanceState) { …
Run Code Online (Sandbox Code Playgroud)

android dialog android-fragments

9
推荐指数
1
解决办法
1万
查看次数

具有父级大小的XML中的径向渐变

我试图实现一个组件来为按钮或其他组件制作自定义阴影,我知道使用9patch或带有阴影的png会更容易,但我想在其状态下以编程方式更改颜色和大小(按下,等等,所以我决定尝试9个图像,全部是XML格式,所以阴影色调从组件的一侧开始渐变.

<!-- Left Shadow layer -->
<item>
    <shape android:shape="rectangle" >
        <gradient
            android:angle="0"
            android:endColor="#FFFF0000"
            android:startColor="#00FF0000" />
    </shape>
</item>
Run Code Online (Sandbox Code Playgroud)

它看起来很好,问题是在角落和android:gradientRadius参数现在它设置为固定大小,但在上下文帮助据说可以设置为基本大小10%或父级大小10%的百分比p,我想要它设置一个100%的半径,所以渐变总是从主颜色开始,然后消失在正方形的边缘.

- 编辑 -

关于gradientRadius gradientRadius的android文档

<shape android:shape="rectangle" >
        <gradient
            android:endColor="#00FF0000"
            android:startColor="#FFFF0000"
            android:gradientRadius="18"
            android:centerX="100%"
            android:centerY="100%"
            android:type="radial" />
    </shape>
Run Code Online (Sandbox Code Playgroud)

那就是我现在:(我不知道如何设置这个大小以适应其父视图.

任何帮助将不胜感激,当我完成组件我将把代码放在答案:)所以典型的按钮可以在xml中具有可自定义的阴影.

应得组件的图像.

- 编辑 -

我仍然对此感兴趣:)没有人有线索?

带有radia渐变的按钮

android android-layout android-xml

7
推荐指数
1
解决办法
3261
查看次数

如何避免TalkBack读取被解散的片段

我正在开发一个简单的应用程序,其结构在活动和碎片中,这是使其可访问的要求之一,所以我做了所有的内容描述,导航,焦点等.

它的效果很好,除了片段,如果有一个活动加载一个片段,对讲读取其内容,那么用户点击一些东西和一个可以添加到堆栈顶部的细节片段.

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
audios = AudiosListFragment.newInstance(params);
ft.add(R.id.audios_fragment_holder, audios);
ft.commit();
Run Code Online (Sandbox Code Playgroud)

如果用户继续导航对讲仍然记住丢失片段的每个元素的位置.

有没有办法清除事件的辅助功能列表并强制它再次获取它?可访问性管理器似乎没有任何方法.

AccessibilityManager manager = (AccessibilityManager) getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE);
    manager.getAccessibilityServiceList();
Run Code Online (Sandbox Code Playgroud)

- 编辑 - 我尝试过但没有成功的事情.

从片段中的视图创建发送事件.

    AccessibilityEvent event =
    AccessibilityEvent.obtain(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
    AccessibilityDelegate delegate = new AccessibilityDelegate();
    v.setAccessibilityDelegate(delegate);
    delegate.dispatchPopulateAccessibilityEvent(container, event);
Run Code Online (Sandbox Code Playgroud)

中断片段的onResume上的所有待处理文本.

 AccessibilityManager mgr = (AccessibilityManager)
 getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE);
 mgr.interrupt();
Run Code Online (Sandbox Code Playgroud)

请求装饰器视图注册window_content_change或window_state_change事件.

 getWindow().getDecorView()
    .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
Run Code Online (Sandbox Code Playgroud)

- 编辑 - 制作了一个DumpView层次结构,并且没有被解散的片段的痕迹,但是对讲的剧照导航它:(

谢谢,我希望有人可以对这个问题有所了解:)

问候.

android accessibility android-fragments talkback

6
推荐指数
1
解决办法
1786
查看次数

在android中注入带有匕首的适配器

我只是尝试匕首而不是roboguice,到目前为止,刀具很棒很简单,指向它:)

但另一方面,匕首我发现它比roboguice更不易配置,我必须进行基准测试是否值得改变,但在这种情况下我正在研究如何注入东西,比如Adapters,这就是我做的,它的工作原理:

public class PeopleAdapter extends BaseAdapter {

private static final String TAG = PeopleAdapter.class.getName();
@Inject
TempoSharedPreferences prefs;

private LinkedList<People> elements;

public PeopleAdapter (LinkedList<People> elements, TempoApplication app) {
    this.elements = elements;
    app.inject(this);
    Log.d(TAG, "registered: " + prefs.isRegistered());
} ....
Run Code Online (Sandbox Code Playgroud)

但是在创建这个实例的Activity上我必须得到一个允许注入的应用程序,每次使用该依赖项的类时我都必须添加到模块中,roboguice为我做了所有这些并且只有一个入口点修改东西.

我做错了什么?有没有更好的方法来进行这种注射?避免在模块上声明每个类?

@Module(injects = {
    MainActivity.class,
    PeopleAdapter.class
    },
    library = true)
public class AndroidModule { ....
Run Code Online (Sandbox Code Playgroud)

我会很感激任何评论或最佳实践或经验.

谢谢!

java android dependency-injection dagger

6
推荐指数
1
解决办法
2901
查看次数

drop事件未在主干视图上触发

我很高兴编码和学习骨干这个#〜@@!发生了!

我使用require将我的观点与模型等分开.

在我的Backbone视图中,我处理这些事件:

define(['...'],function(...) {

var DishView = Backbone.View.extend({
    template: _.template(dish),
    tagName: 'div',
    id: 'dish',

    initialize: function() {
        console.log('initializing dishView');
        this.model.on('change', this.render, this);
    },

    render: function(){
        console.log('rendering dishView');
        this.$el.html(this.template(this.model.toJSON()));
        return this;
    },

    events: {
        'click #relations-menu .newItem': 'launch_modal_relations',
        'click #delete' : 'delete_dish',
        'click #save-basic-changes': 'save_basic',
        'drop #dropPicture' : 'dropHandler',
        'dragenter #dropPicture' : 'alertMe'
    },

    alertMe: function () {
        console.log('clicked on image');
    },

    delete_dish: function () {
        this.model.deleteMyself();
        Backbone.history.navigate('/', {trigger: true});
    },

    save_basic: function (event) {
        var name = $('#inputName').val();
        var …
Run Code Online (Sandbox Code Playgroud)

jquery events node.js requirejs backbone.js

4
推荐指数
1
解决办法
3655
查看次数